C语言关于链表的问题

#include<stdio.h>#include<stdlib.h>intmain(){intm,i,n=0;char*q;structstring{charc;str... #include <stdio.h>
#include<stdlib.h>
int main()
{
int m,i,n=0;
char *q;
struct string{
char c;
struct string *b;
}a,*p=&a;
for(;;){
(*p).c=getchar();
if((*p).c==EOF)
break;
p=p->b;
p=(struct string *)malloc(sizeof(struct string));
}
struct string *x=&a,*y=&a;
while((*x).c!=EOF){
++n;
printf("%c",(*x).c);
x=x->b;
}
printf("\n\n");
q=(char *)malloc(n*sizeof(char));
for(i=0;;++i){
if((*y).c==EOF)
break;
q[i]=((*y).c);
y=y->b;
}
for(m=0;m<i;++m){
printf("%c",q[m]);
}
printf("\n");

}
为什么总是不对
展开
 我来答
孙轼
2015-06-12 · 超过13用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:16万
展开全部
你写的这个程序太乱了,我看了半天,给你提几个建议:
1,string 是关键词,你应该知道,怎么可以用它来命名结构体呢?
2.你的链表很有问题,链表不是这样写的 ,对于链表,要在他的尾指针处加上NULL,这样可以防止内存泄漏,
3,程序要分层,比如,你对你的链表,你都没有办法检测这个链构建的对不对,应该在结构体后面至少分成两个函数,一个负责链表的初始化,另一个负责insert,但你把他们都放在一起了,这样对你定位错误很难,甚至都不知道是哪个出错了,
4,要尽量养成通过对函数的调用来完成任务,main函数只负责对函数的调用,这样你可以迅速定位问题,你可以想象像你这样写个几万行代码,如果出错的后果吗
我说的可能很直接,希望你不要介意,毕竟都是好话
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式