C语言链表问题,通不过编译

2025-03-31 08:39:11
推荐回答(2个)
回答1:

错误比较多,见注释。

#include "stdio.h"
#include "stdlib.h"
//#define N 5; //define N 5;实际意义相当于用"5;"代替程序中N,应去掉分号

#define N 5
typedef struct node{
int data;
struct node *next;
}
NODE;
void fun(NODE *h)
{
NODE *p,*q,*r;
p=h;
//if(p==NULL) rerurn; //return 拼写错误
if(p==NULL) return;
q=p->next;
p->next=NULL;
while(q)
{
r=q->next;q->next=p;p=q;q=r;
}
h->next=p;
}

NODE *creatlist(int a[])
{

NODE *h,*p,*q;
int i;

h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i {
q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL) h->next=p=q;
else{p->next=q;p=q;}
}
return h;
}

void outlist(NODE *h)
{
NODE *p;
p=h->next;
if(p==NULL) printf("the list is null!\n");
else printf("\n head");
do
{
printf("->%d",p->data);
p=p->next;
}
while(p!=NULL);
printf("->End\n");
}
main()
{
NODE *head;
int a[N]={2,4,6,8,10};
head=creatlist(a);
// printf("\n The original list is:\n); //少引号

printf("\n The original list is:\n");
outlist (head);
fun(head);
printf("the data after inverting :\n");
outlist(head);
}

回答2:

#define N 5;
应该写成: #define N 5
if(p==NULL) rerurn;
应该写成: if(p==NULL) return;