m0_67805109 2022-05-07 00:17 采纳率: 75%
浏览 109
已结题

单链表我都听了,也根据书上敲得,但是就是不对,各位帮我看看问题顺便告诉我怎么学敲这个代码哈

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
int i,n;
typedef struct LNode
{
ElemType data;
struct LNode next;
}LNode,LinkList;
Status InitList(LinkList &L)
{
L=(LNode
)malloc(sizeof(LNode));
L->next=NULL;
return OK;
}
void CreateList_H(LinkList &L,int n,int i)
{
for(i=0;i<n;++i)
{
LinkList*p;
p=(LNode*)malloc(sizeof(LNode));
scanf("%d",&p->data);
p-next=L-next;
L-next=p;
}
}
int main()
{
LinkList
q;
q=(LNode*)malloc(sizeof(LNode));
q=head->next;
while(q!=NULL)
{
printf("%d",q->data);
q=q-next;
}
return 0;
}

img

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-05-07 09:36
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #define OK 1
    #define OVERFLOW -2
    typedef int Status;
    typedef int ElemType;
    //int i, n;   //修改
    typedef struct LNode
    {
        ElemType data;
        struct LNode* next; //修改
    }LNode,* LinkList;      //修改
    Status InitList(LinkList& L)
    {
        L = (LinkList)malloc(sizeof(LNode)); //修改
        //L = (LNode)malloc(sizeof(LNode));
        L->next = NULL;
        return OK;
    }
    void CreateList_H(LinkList L, int n)  //修改
    //void CreateList_H(LinkList& L, int n, int i)
    {
        int i;
        for (i = 0; i < n; ++i)
        {
            LinkList p;  //LinkList* p; //修改
            p = (LNode*)malloc(sizeof(LNode));
            scanf("%d", &p->data);
            p->next = L->next;  
            //p - next = L - next;   //修改
            L->next = p;
            //L - next = p;        //修改
        }
    }
    int main()
    {
        int n;
        LinkList q, L = NULL;
        InitList(L);                //修改
        printf("请输入结点个数:");  //修改
        scanf("%d", &n);            //修改
        printf("请输入%d个结点值:", n);//修改
        CreateList_H(L, n);        //修改 
        //q = (LNode*)malloc(sizeof(LNode));//修改
        //q = head->next;                   //修改
        q = L->next;
        while (q != NULL)
        {
            printf("%d ", q->data);
            q = q->next;
            //q = q - next;   //修改
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月7日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答