回 帖 发 新 帖 刷新版面

主题:[讨论]建立单链表并逆序输出有错误,请各位高手帮忙改一下

#include<stdio.h>
#define NULL 0
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*linklist;

linklist creatlist(linklist *L,int n)
{
 linklist *p;
 int i;
 L=(linklist)malloc(sizeof(LNode));
 L->next=NULL;
 for(i=n;i>0;--i)
 {
  p=(linklist)malloc(sizeof(LNode));
  scanf("%d",&(*p)->data);
  p->next=L->next;L->next=p;
 }

 return L;
}
main()
{
 linklist p,L;
 int n;
 printf("enter the n:");
 scanf("%d",&n);
 L=creatlist(&L,n);
 p=L->next;
 while(p)
 {
  printf("%d",p->data);
  p=p->next;
 }
 getch();
}
我用的是TC,程序不能运行,提示错误为:
错误 shucud~1.c 13: 指针必需在 -> 的左侧在 creatlist 函数中
错误 shucud~1.c 18: 指针必需在 -> 的左侧在 creatlist 函数中
错误 shucud~1.c 18: 指针必需在 -> 的左侧在 creatlist 函数中
错误 shucud~1.c 18: 指针必需在 -> 的左侧在 creatlist 函数中
请各位大哥解释一下原因并改正程序。






回复列表 (共1个回复)

沙发

#include<stdio.h>
#include<malloc.h>
#define NULL 0
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*linklist;

linklist creatlist(linklist L,int n)
{
 linklist p;
 int i;
 L=(linklist)malloc(sizeof(LNode));
 L->next=NULL;
 for(i=n;i>0;i--)
 {
  p=(linklist)malloc(sizeof(LNode));
  scanf("%d",&(p->data));
  p->next=L->next;L->next=p;
 }

 return L;
}
 void main()
{
 linklist p,L;
 int n;
 printf("enter the n:");
 scanf("%d",&n);
 L=creatlist(L,n);
 p=L->next;
 while(p)
 {
  printf("%d",p->data);
  p=p->next;
 }
getchar();
 
}

你写程序还真的错误不少哦,没关系,在努力,我给你改了,
可以运行,调试成功1!1
要注意你的定义
#include<stdio.h>
#define NULL 0
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*linklist;
你已经定义了一个指针了,你就小心你的调用,和返回值,自己检查一下吧!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册