预定程序员 2023-01-30 20:35 采纳率: 67.4%
浏览 118
已结题

设计一个算法,求一个非空循环单链表L中最后一个最大节点的逻辑序号

问题:(链表建立输出都正常)主函数调用子函数的结果,为什么这两种方法(一种int型调用,一种新建一个结构
体)都不输出有子函数的部分,但是这两种方法在其他此类型的代码中就能运行。
(补充:代码没有写出第一个为最大值的情况,因为不会写这种情况,如果您会写,感谢您的补充)

#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
typedef struct Lnode
{
    int data;
    struct Lnode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
    L=(LinkNode *)malloc(sizeof(LinkNode));
    L->next=L;
}
void CreatList(LinkNode *&L,int a[],int n)
{
    LinkNode *p,*r=L;
    for(int i=0;i<n;i++)
    {
        p=(LinkNode *)malloc(sizeof(LinkNode));
        p->data=a[i];
        r->next=p;
        r=p;
    }
    r->next=NULL;
}
void DispList(LinkNode *L)
{
    LinkNode *p=L->next;
    while(p!=L)
    {
        printf("%d ",p->data);
        p=p->next;
    }
}
int xh(LinkNode *L)
{
    int i=0;
    LinkNode *p=L->next;
    int max=p->data;
    while(p!=L&&p->data<=max)
    {
        i++;
        p=p->next;
    }
    if(p->data>max)
    {
      i++;
    }
    return(i); 
} 
int main()
{
    LinkNode *L;
    int a[6];
    InitList(L);
    printf("请输入:");
    for(int i=0;i<6;i++)
    {
        scanf("%d",&a[i]);
    }
    CreatList(L,a,6);
    printf("请输出:");
    DispList(L);
    xh(L);
    printf("\n最大的序号是%d",xh(L));
}
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
typedef struct Lnode
{
    int data;
    struct Lnode *next;
}LinkNode;
typedef struct
{
    int i;
}xhreturn;
void InitList(LinkNode *&L)
{
    L=(LinkNode *)malloc(sizeof(LinkNode));
    L->next=L;
}
void CreatList(LinkNode *&L,int a[],int n)
{
    LinkNode *p,*r=L;
    for(int i=0;i<n;i++)
    {
        p=(LinkNode *)malloc(sizeof(LinkNode));
        p->data=a[i];
        r->next=p;
        r=p;
    }
    r->next=NULL;
}
void DispList(LinkNode *L)
{
    LinkNode *p=L->next;
    while(p!=L)
    {
        printf("%d ",p->data);
        p=p->next;
    }
}
xhreturn xh(LinkNode *L)
{
    int i=0;
    LinkNode *p=L->next;
    int max=p->data;
    while(p!=L&&p->data<=max)
    {
        i++;
        p=p->next;
    }
    if(p->data>max)
    {
      i++;
    }
    xhreturn k;
    k.i=i;
    return(k); 
} 
int main()
{
    LinkNode *L;
    int a[6];
    InitList(L);
    printf("请输入:");
    for(int i=0;i<6;i++)
    {
        scanf("%d",&a[i]);
    }
    CreatList(L,a,6);
    printf("请输出:");
    DispList(L);
    xhreturn k=xh(L);
    printf("\n最大的序号是%d",k.i);
}

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-01-30 22:10
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月19日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 VS2022 C++的相关代码问题咨询
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥30 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码