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

#include<stdio.h>
#include<malloc.h>
#include <conio.h>
/**************************************************************/
struct student
{
int num;
struct student *next;
};
/************************创建链表****************************/
struct student *create()
{
struct student *head;
head=(struct student *)malloc(sizeof(struct student));
head->next=NULL;
return head;
}
/************************录入数据******************************/
void Input(struct student *h)
{
struct student *p,*q;
p=h;
while(1)
{
q=(struct student *)malloc(sizeof(struct student));

printf("请输入学生学号:");
scanf("%d",&p->num);

q->next=NULL;
p->next=q;
p=q;

int ch;
printf("要继续输入下一个吗(y/n)\n");ch=getch();
if(ch=='y'||ch=='Y')
{
}
else
{
free(q);
break;
}

}
}
/************************显示链表******************************/
void Disp(struct student *h)
{
printf("\n\n");

struct student *p=h;

while(p->next!=NULL)
{
printf("学号为:%d\n",p->num);
p=p->next;
}
}
/***************************************************************/
void main()
{
struct student *h;
h=create();
Input(h);
Disp(h);
}
/***************************************************************/

[此贴子已经被作者于2007-7-22 23:11:53编辑过]

搜索更多相关主题的帖子: 单链 
2007-07-22 22:28
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
有什么错误提示?
2007-07-22 22:35
linsongbin
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-6-9
收藏
得分:0 
最后一个是乱码~~
2007-07-22 22:39
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 

我都测试过,可是没发现问题啊~~

2007-07-22 22:45
linsongbin
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-6-9
收藏
得分:0 
int ch;
printf("要继续输入下一个吗(y/n)\n");ch=getch();
if(ch=='y'||ch=='Y')
{
}
else
{
free(q);
break;
}
主要是加了这段,如果换了就可以.......
2007-07-22 22:46
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
这段看不出那里有错误~~
我刚才又测试了一下,没有发现问题!
2007-07-22 23:01
linsongbin
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-6-9
收藏
得分:0 
不是吧,你调试没问题???我用的是vc++ 6.0

像这样

请输入学生学号:21
要继续输入下一个吗(y/n)n

学号为:21
学号为:-572662307



就这样......................为什么啊?????????

[此贴子已经被作者于2007-7-22 23:11:32编辑过]

2007-07-22 23:09
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
晕~~我还在用TC呢...
不过程序应该不会有问题啊
2007-07-22 23:25
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
我知道问题在那了
是free(q)............
2007-07-22 23:28
wangwei2008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-20
收藏
得分:0 

修改了,不知是不是你想要的结果?
代码:
#include<stdio.h>
#include<malloc.h>
#include <conio.h>
/**************************************************************/
struct student
{
int num;
struct student *next;
};
/************************创建链表****************************/
struct student *create()
{
struct student *head;
head=(struct student *)malloc(sizeof(struct student));
head->next=NULL;
return head;
}
/************************录入数据******************************/
void Input(struct student *h)
{
struct student *p,*q;
int ch;
p=h;
printf("请输入学生学号:");
scanf("%d",&p->num);
while(1)
{
printf("要继续输入下一个吗(y/n)\n");
ch=getch();
if(ch=='y'||ch=='Y')
{
q=(struct student *)malloc(sizeof(struct student));
printf("请输入学生学号:");
scanf("%d",&q->num);
q->next=NULL;
p->next=q;
p=q;
}
else
{
break;
}

}
}
/************************显示链表******************************/
void Disp(struct student *h)
{
struct student *p;
//printf("\n\n");
p=h;
while(p!=NULL)
{
printf("学号为:%d\n",p->num);
p=p->next;
}
}
/********************释放链表*****************************/
void Free_link(struct student *h)
{
struct student *p;
do
{
p=h->next;
free(h);
h=p;
}while(h!=NULL);
}
/***************************************************************/
void main()
{
struct student *h;
h=create();
Input(h);
Disp(h);
Free_link(h);
}
/***************************************************************/

2007-07-22 23:41
快速回复:[求助]单链表改了还错??
数据加载中...
 
   



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

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