C语言高手帮忙啊!急!!!!!!!!

#include<alloc.h>
#include<stdio.h>
typedef int datatype
typedef struct node
{
datatype data;
struct node *next;
} linklist;
linklist *CREAT()
{
datatype n;
linklist * head,* s,* r;
head=NULL;
r=NULL;
printf("Please input the numbers!");
scanf("%d",&n);
while(n!=00)
{
s=malloc(sizeof(linklist));
s->data=n;
r->next=s;
r=s;
scanf("%d",&n);
}
r->next=NULL;
return head;
}

int LENGTH(linklist L)
{
int i=0;
linklist *p,*head;
p=head->next;
while(p!=NULL)
{
p=p->next;
i++;
}
head->data=i;
return(i);

}

void OUT(linklist L)
{
linklist *p *head;
p=head;
printf("The length of the linklist is %d! \n", head->data);
while(p->data!=00)
{
printf("%d",p->data);
p=p->next;
}
}

void main()
{
linklist L;
linklist *CREAT();
int LENGTH(L);
void OUT(L);
}

第4和第9行有错误declaration syntax error,请高手赐教

问题很严重,表面上是第4行和第9行有错误,但实质并非如此。
错误:
1:第3行,类型定义后面应加上分号,注意与define不同
2:main()函数,在调用CREAT()、LENGTH()和OUT()函数时不应加上linklist、int和void,你这样写是在申明函数,并非调用。
3:你创建的链表是一第一个元素为头节点的的,但你却将链表长度赋给头节点,导致原头节点值丢失,无法输出。
还有很多指针运用上面的错误,我就不多说了,下面是我修改过的程序:
#include<alloc.h>
#include<stdio.h>
typedef int datatype ;
typedef struct node
{
datatype data;
struct node *next;
} linklist;
linklist *CREAT()
{
datatype n;
linklist * head,* s,* r;
head=NULL;
r=NULL;
printf("Please input the numbers!");
scanf("%d",&n);
head=(linklist*)malloc(sizeof(linklist));
head->data=0;
r=head;
while(n!=0)
{
s=(linklist*)malloc(sizeof(linklist));
s->data=n;
r->next=s;
r=s;
scanf("%d",&n);
}
r->next=NULL;
return head;
}

int LENGTH(linklist *L)
{
int i=0;
linklist *p,*head=L;
p=head->next;
while(p!=NULL)
{
p=p->next;
i++;
}
head->data=i;
return(i);

}

void OUT(linklist *L)
{
linklist *p, *head=L;
p=head->next;
printf("The length of the linklist is %d! \n", head->data);
while(p!=NULL)
{
printf("%d,",p->data);
p=p->next;
}
}

void main()
{
linklist *L;
L=CREAT();
LENGTH(L);
OUT(L);
}
该程序在turboc2.0上运行成功。
顺便说一下:其实我这学期刚学《数据结构》,我想你也应该在学这门课吧,不知道可否交个朋友,以后好互相讨教。QQ:729430705
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-08
1. CREAT()函数里面头节点head申明了但没有在链表种使用它 到最后返回head那么链表肯定是空
2.typedef int datatype 后面是不是没加;
第2个回答  2009-03-08
#include<malloc.h>
#include<stdio.h>
typedef int datatype ;
typedef struct node
{
datatype data;
struct node *next;
} *linklist;
linklist CREAT()
{
datatype n;
linklist head,s, r;
head=(linklist)malloc(sizeof(linklist));
head->next=NULL;
printf("Please input the numbers!");
scanf("%d",&n);
while(n!=0)
{
s=(linklist)malloc(sizeof(linklist));
s->data=n;
s->next=head->next;
head->next=s;
scanf("%d",&n);
}
//s->data=n;
//r->next=NULL;
return head;
}

int LENGTH(linklist L)
{
int i=0;
linklist p,head;
p=L->next;
while(p!=NULL)
{
p=p->next;
i++;
}
L->data=i;
return(i);

}

void OUT(linklist L)
{
linklist p ,head;
p=head=L;
printf("The length of the linklist is %d! \n", head->data);
while(p!=NULL)
{
printf("%d__",p->data);
p=p->next;
}
}

void main()
{
linklist L;
int length;
L= CREAT();
length=LENGTH(L);
OUT(L);
}
第3个回答  2009-03-08
这个程序...即使按照上面那样改过来,估计也运行不了!!!!

照你程序的意思头结点不算元素节点,只是用来存放节点个数对吗?
但是你输入的时候确实将它当做了存放元素的节点了!

你是不是输入的时候一直到输入0才停止输入呀?那0不算节点元素是嘛?如果是就按照下面我给你该的看看是不是你要的:

#include<malloc.h>
#include<stdio.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
} linklist;

node *MakeNode(int data) /*节点生成单独提出来作为一个函数*/
{
node *p=(node *)malloc(sizeof(node));
p->data = data;
p->next = NULL;
return p;
}

linklist *initLink()/*链表初始化*/
{
node *p=MakeNode(0);/*输出化的点吧元素个数为0,应传个0*/
return p;
}

int scanData()
{
datatype n;
printf("Please input the numbers:");
scanf("%d",&n);
return n;
}
linklist *CREAT()
{
datatype n=-1;
node *head,*cur,*p;
p= head = initLink();/*初始化链表*/
n = scanData();
while(n)
{
cur = MakeNode(n);
p->next=cur; /*当前节点插入链表末尾节点*/
p=cur;/*当前节点成为链表末尾节点*/

head->data++;/*节点数加1*/

n = scanData();
}
return head;
}

int LENGTH(linklist *L)
{
return L->data;
}

void OUT(linklist *L)
{
/*
linklist *p,*head;
p=head; /*这里的head又是一个野指针*/

linklist *cur=L->next;
printf("The length of the linklist is: %d \n", L->data);
while(cur) /*输出的时候只要判断当前节点是否还有下一个节点不就行了?*/
{
printf("%3d",cur->data);
cur=cur->next;
}
printf("\n");
}

void main()
{
linklist *L;
L = CREAT();
LENGTH(L);
OUT(L);
}

c语言的高手,帮个忙啊,本人现在没有财富值了,呜呜。。
c输出的是一个字符,所以输出的是p[1][2]的那个字符:a。

C语言啊。。字符串。。麻烦高手们帮下忙。。有点急。速度快点还能多赏点...
include<stdio.h> include<string.h> void main(){ char str[10];while( scanf("%s",str) != EOF)printf("%s\\n",str);} 参考资料:chat

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者%...

C语言编程求助!!!求高手帮忙!感激不尽!
include "stdio.h"include"string.h"int main(){ int i,s = 0; \/*请修改此处:int和i间有空格; 计算的和值s首先要清零 *\/ char str[80];i=0;while ((str[i]=getchar())!='\\n')i++;str[i]='\\0';for(i=0;i<80;i++)if (str[i]>='0' && str[i]<='9') \/*...

很急啊,C语言高手快帮忙!
括号内是控制条件 也就是说如果括号 里面的值不等于0 也就是说条件为真,那么执行后面的语句 如果等于0了,那么 条件为假。那就不执 后面的语句了。我举个例子:b=3;a=1;if(a)b=2;这时b的值就是2了。如果是 b=3;a=0;if(a)b=2;这时候b的值不是2 while也是一样的 反正你记住 if(...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

C语言高手帮忙啊!急!!!
;while(p!=NULL){ printf("%d,",p->data);p=p->next;} } void main(){ linklist *L;L=CREAT();LENGTH(L);OUT(L);} 该程序在turboc2.0上运行成功。顺便说一下:其实我这学期刚学《数据结构》,我想你也应该在学这门课吧,不知道可否交个朋友,以后好互相讨教。QQ:729430705 ...

C语言编程问题.请高手进(附源码)!!!HELP
for(c=0;c!=b;c++)sr();break;case 2:;break;case 3:;break;default:printf("输入错误,请重新打开程序输入!");} } void sr(void){ int b=0,d=0,f=0;float e=0.0;char A[20],c[20];FILE *g;g=fopen("fdsj.dat","a+");\/\/---a方式好,是追加 printf("请输入菜的类别...

急!急!急! 跪求C语言高手解决!
程序如下:include "stdio.h"main(){ int input_value,minutes,seconds;printf("Input the number of seconds: ");scanf("%d",&input_value);minutes=input_value\/60;seconds=input_value%60;printf("%d seconds is equivalevnt to %d minutes and %d seconds\\n",input_value,minutes,seconds);}...

C语言编程问题!!高手救命,在线等答案
针对这种情况,如果非要用C语言而不是C++的话,那么目前还没有好的防止错误或者在输入错误时给出提示的方法。以下是模拟错误的执行过程:姓名:张三 C分数:12 JAVA分数:12 姓名:王 C分数:99 JAVA分数:66 姓名:刘 C分数:34 JAVA分数:56 姓名:陈 C分数:aa JAVA分数:姓名:cc C分数:bb...

相似回答
大家正在搜