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