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

#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

修改处见注释,供参考:

#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;
}

你这段代码问题太大了,最主要就是没有用指针,还有语法问题,比如结构体里面的next属性和类型之间没有空格

把指针、结构体、地址这几个知识点搞懂,后面就顺理成章,能找到问题!