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

今天学习单链表添加数据...我用的是DEV C++ 编译器,,程序没有报错..但是不能正常运行

图片附件: 游客没有浏览图片的权限,请 登录注册
就出现了这个图片..想了好久,都不明白..


但是用 TC编译器却,可以运行.. 有点 晕了... 求求大家帮帮我啊~~


以下是程序,,主要是功能是: 让用户输入数据,并把数据打印出来....



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


typedef struct student /*建立*/
{
int data;
struct student*next;
}students;

students*init() /*初始化*/
{
students*head;
head=(students*)malloc(sizeof(students));
head->next=NULL;
return head ;
}

int main(void)
{
int input(students*head);
int print(students*head);
students*head;
head=(students*)malloc(sizeof(students));
head=init();
input(head);
print(head);
getch();
}


int input(students*head)
{
char sign;
students*p;
do
{
p=(students*)malloc(sizeof(students));
scanf("%d",&p->data);
head->next=p;
head=p;
printf("wether to inout (y/n):");
scanf("%s",&sign);
}
while(sign=='Y'||sign=='y'); /*do-while 结构。*/

head->next=NULL;
return 1;
}


int print(students*head)
{
while(head->next!=NULL)
{
head=head->next;
printf("%d",head->data);
printf("hello");
}
return 2;
}



先谢谢各位了............

搜索更多相关主题的帖子: 链表 
2007-09-09 14:11
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 


很感谢,斑竹的留言,,但是,我还是不懂啊>>?? 555555555
还有就是
原来程序输入一个数据的时候,用(Y/N)来表示输入是否(继续/结束),,我把它换成了,,但用户输入 -1表示程序结束...结果就可以运行了,,,TC就不用说了...
下面是可以运行的程序,,只是改变了sign(标记)... 到底是怎么回事啊>>?



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


typedef struct student /*建立*/
{
int data;
struct student*next;
}students;

students*init() /*初始化*/
{
students*head;
head=(students*)malloc(sizeof(students));
head->next=NULL;
return head ;
}

int main(void)
{
int input(students*head);
int print(students*head);
students*head;
head=(students*)malloc(sizeof(students));
head=init();
input(head);
print(head);
getch();
}


int input(students*head)
{
int sign;
students*p;
do
{
p=(students*)malloc(sizeof(students));
scanf("%d",&p->data);
head->next=p;
head=p;
printf("wether to inout or not (-1 means end):");
scanf("%d",&sign);
}
while(sign!=-1); /*do-while 结构。*/

head->next=NULL;
return 1;
}


int print(students*head)
{
while(head->next!=NULL)
{
head=head->next;
printf("\n%d",head->data);
}
return 2;
}


一件小事做久了, 就是一件很伟大的事情.
2007-09-09 16:35
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 


我又测试了一下,把 标记变了一下..
do
{
......
char sign;
scanf("%c",&sign)
}while(sign=='Y'||sign=='y');


;,,结果只运行一次,,,就 直接打印了出来,,, 似乎把输入的 'enter' 相对应的ASLL也赋给了 sign,,,从儿导致,while语句判断的时候,,就 以为拥护是输入的是 putch(),而不是 'y','Y' ...


5555555555 郁闷啊~~~~~~~~~~

一件小事做久了, 就是一件很伟大的事情.
2007-09-10 09:17
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 

啊~~.
指针应该没有问题吧...


到底是怎么回事呀???


一件小事做久了, 就是一件很伟大的事情.
2007-09-10 19:05
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 

啊 ~坚决不要让这个.(我的处女贴)沉下去...


大家帮帮我啊~~~~~~~~~ 呵呵


一件小事做久了, 就是一件很伟大的事情.
2007-09-11 13:59
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 
回复:(c_er)菜鸟求助...关于链表问题....
非常感谢 sunkaidong 的 留言...你修改的程序,,不错啊(可以运行)..

但是现在主要问题是 char sign

(1) 当 sign 让 Y/N 表示输入 继续和结束..程序会出现"内存"错误.
(2) 当 sign 让 -1或则其他非字符型数据表示结束时.. 程序就可以正常运行..


为什么(1),不行了..在dev-c++和vc6.0不行 ??
在TC编译器都可以......

一件小事做久了, 就是一件很伟大的事情.
2007-09-12 10:11
快速回复:菜鸟求助...关于链表问题....
数据加载中...
 
   



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

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