| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:[求助] 关于链表
只看楼主 加入收藏
zhujie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-5-23
收藏
 问题点数:0 回复次数:9 
[求助] 关于链表

大家请看,我这个程序错在哪儿啦?
#include<stdio.h>
#include<stdlib.h>

struct Node
{
int date;
struct Node *next;
};


struct Node *creat()
{
struct Node *head,*tail,*p;
int x;
head=tail=NULL;
printf("Input the number:");
while(scanf("%d",&x)==1) /*输入一个字母或符号结束输入*/
{
p= (struct Node *) malloc (sizeof(struct Node));
p->date=x;
p->next=NULL;
if(head==NULL)
head=tail=p;
else
tail=tail->next;
tail->next=p;
}
return(head);
}

struct Node *del(struct Node *head)
{
struct Node *p,*q;
int i,x;
p=head;
printf("Input the number you want to del:");
scanf("%d",&x);
while(1)
{
if(x==1)
{
head=head->next;
free(p);
break;
}
else
{
for(i=1;i<x;i++)
{
q=p;
p=p->next;
}
q=p->next;
free(p);
break;
}
}
return(head);
}


main()
{
struct Node *head,*p,*q,*r,*s;
int i,x;
head=creat();
p=r=head;
while(p)
{
printf("%d ",p->date);
q=p->next;
free(p);
p=q;
}
scanf("%d",&x);
r=del(r);
}
就是不能删除,不知问题在哪儿。

搜索更多相关主题的帖子: 链表 
2006-05-29 19:29
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

写的太乱啦!!

奋斗改变一切!!
2006-05-29 19:48
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<stdio.h>
#include<stdlib.h>

struct Node
{
int date;
struct Node *next;
};


struct Node *creat()
{
struct Node *head,*tail,*p;
int x;
head=tail=NULL;
printf("Input the number:");
while(scanf("%d",&x)==1) /*输入一个字母或符号结束输入*/
{
p= (struct Node *) malloc (sizeof(struct Node));
p->date=x;
p->next=NULL;
if(head==NULL)
head=tail=p;
else
tail=tail->next;
tail->next=p;
}
return(head);
}

void del(struct Node *head,int x)
{
struct Node *p,*q;
int i;
p=head;

if(x==1)
{
head=head->next;
free(p);

}
else
{
for(i=1;i<x;i++)
{
q=p;
p=p->next;
}

q->next=p->next;
free (p);

}

}

main()
{
struct Node *head,*p,*r,*s;
int i,x;
head=creat();
p=r=head;
while(p)
{
printf("%d ",p->date);
p=p->next;

}
printf("Input the number you want to del:");
fflush(stdin);
scanf("%d",&x);
del(r,x);
p=head;
while(p)
{
printf("%d ",p->date);
p=p->next;

}
getch();
}



请自己对照,我自己也忘了都改了哪些,确实比较乱,楼主您的代码风格不好,


对不礼貌的女生收钱......
2006-05-29 20:03
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
fflush(stdin);???

什么意思啊?

奋斗改变一切!!
2006-05-29 20:13
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

存盘,这里用来清空键盘最后输入的那个字符.


对不礼貌的女生收钱......
2006-05-29 20:15
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
哎,不懂的太多啦!

奋斗改变一切!!
2006-05-29 20:32
zhujie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-5-23
收藏
得分:0 

为什么不用fflush就出不了结果呢

2006-05-30 13:57
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(zhujie)为什么不用fflush就出不了结果呢?
以下是引用zhujie在2006-5-30 13:57:00的发言:

为什么不用fflush就出不了结果呢

因为前一次的scanf()语句没有将你键盘输入的所有字符用完,这种“残留”往往会坏事儿。所以要用fflush()把它们清洗一下,就像上顿用过的餐具要洗涮干净才能吃下顿一样。这种很有实用价值的东西在正规教材上往往不讲。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-30 15:39
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
今天刚学这个东西,有点困难发现错误!!~`~
2006-05-30 16:58
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
有实用价值而正规教材不大讲的还有:随机数rand( )
实际上很多程序的调试为了避免程序员先入为主的非典型测试数据,可以广泛使用随机数来进行测试,较容易暴露逻辑漏洞。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-30 17:46
快速回复:[求助] 关于链表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.082987 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved