| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 937 人关注过本帖
标题:[求助]那位大哥大嫂幫小弟解決一下簡單鏈表問題
取消只看楼主 加入收藏
C爷们
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-8-5
收藏
 问题点数:0 回复次数:4 
[求助]那位大哥大嫂幫小弟解決一下簡單鏈表問題
自己做的,總是不對,剛學結構体,做什麽錯什麽。
這個程序是創建一個動態鏈表,然後輸出。但只創建了兩個節點就結束循環了。我哪裏出錯了呢?
#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof (struct student)
struct student
{
char num[11];
char name[20];
struct student *next;
};
void main()
{void print(struct student *head);
struct student *t1,*t2,*head;
head=t1=t2=NULL;
head=t2=t1=(struct student*) malloc(LEN);
scanf("%s,%s",head->num,head->name);
t1->num[10]='\0';
if (t1->num!="stop")
{
t1=t2->next=( struct student*) malloc(LEN);
scanf("%s,%s",t1->num,t1->name);
t1->num[10]='\0';
t2=t1;
}
else
t1->next=NULL;
print(head);
}

void print(struct student *head)
{
struct student *p;
printf("\nNow,these record are:\n");
p=head;
if (head!=NULL)
do
{printf("%s,%s",p->num,p->name);
p=p->next;
}
while (p!=NULL);
}
搜索更多相关主题的帖子: 解決 大嫂 
2007-08-05 11:03
C爷们
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-8-5
收藏
得分:0 

好的,謝謝大哥啦,我在整理一下。

2007-08-05 20:44
C爷们
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-8-5
收藏
得分:0 
回复:(viky2003)恩!!!失误!!strcmp(t1->nu...
为什么不行啊?我觉得两种都可以么!!!
2007-08-09 09:32
C爷们
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-8-5
收藏
得分:0 
以下是引用viky2003在2007-8-5 17:01:23的发言:
void print(struct student *head);这函数应该放到main外面声明!!!错误1!!!



head=t2=t1=(struct student*) malloc(LEN);//三个指针指向同一个地址。。。。。
scanf("%s,%s",head->num,head->name);
t1->num[10]='\0';//这是什么阿??没有必要吧
if (t1->num!="stop")
{
t1=t2->next=( struct student*) malloc(LEN);
scanf("%s,%s",t1->num,t1->name);
t1->num[10]='\0';
t2=t1;
}
else
t1->next=NULL;
print(head);
}
程序没有可读性!!!创建链表方法很多很多!!
还是这样吧:
struct student *phead,*t1=NULL;
phead=(struct student *)malloc(LEN);
scanf("%s,%s",phead->num,phead->name);
phead->next=NULL;
while(phead->num!="stop")
{
t1=(struct student *)malloc(LEN); 只要首节点的num不是stop创建两个节点一个首节点一个t1尾节点。
scanf("%s,%s",t1->num,phead->name);
t1->next=NULL;
break;

}
phead->next=t1;
print(phead);

谢谢大哥拉,这么认真的看我这么乱的程序.我现在已经知道我错在那里了,思路错了,呵呵,我已经改过来了.
"head=t2=t1=(struct student*) malloc(LEN);//三个指针指向同一个地趾":这确实没必要!
"t1->num[10]='\0';//这是什么阿??没有必要吧":似乎是没必要,但如果不加的话输出时,就会多输出一个",",我也不知道为什么.

2007-08-09 10:06
C爷们
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-8-5
收藏
得分:0 
回复:(李天飞)感觉你思维混乱,其中有些过程是不必...
谢谢大哥,我的困难已经解决了,呵呵.
2007-08-09 10:07
快速回复:[求助]那位大哥大嫂幫小弟解決一下簡單鏈表問題
数据加载中...
 
   



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

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