| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 924 人关注过本帖
标题:链表 程序有问题(已解决)
只看楼主 加入收藏
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
 问题点数:0 回复次数:11 
链表 程序有问题(已解决)

请问那里错了,输出的文本和我输入的数据不不同
#include <conio.h>
#include "stdio.h"
#define NULL 0
#define LEN sizeof(struct stuinfo)
struct stuinfo /*学生信息结构体*/
{ char num;
int score;
struct stuinfo *next;
};
typedef struct stuinfo STU;

STU *creat(int n)
{ int i;
STU *head,*p1,*p2;
for(i=0;i<n;i++)
{p1=(STU *)malloc(LEN);
if(p1==NULL)printf("ERROR");
printf("Input the student number and score like this \"**-**\":");
scanf("%d-%d",&p1->num,&p1->score);
if(i==0)
p2=head=p1;
else
p2->next=p1;
p1->next=NULL;
p2=p1;
}
return(head);
}
main()
{int n;
STU *head;
STU *creat(int n);
void save(STU *p);
printf("Input amount of the student:");
scanf("%d",&n);
head=creat(n);
save(head);
}

void save(STU *p)
{
FILE *fp;
fp=fopen("e:\\date.txt","w");
do
{fprintf(fp,"The number of the stendent is %d\n",&p->num);
fprintf(fp,"The score of the %d is: %d\n\n",&p->num,&p->score);
p=p->next;
}
while(p->next!=0);
}

[此贴子已经被作者于2007-3-4 22:48:18编辑过]

搜索更多相关主题的帖子: 链表 
2007-03-02 22:26
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 

占楼

2007-03-03 08:56
yangxu0703
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-1-15
收藏
得分:0 
链表的作用是什么啊!
2007-03-03 11:36
jusnxie
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-3-3
收藏
得分:0 
回复:(zerocn)链表 有疑问
以下是引用zerocn在2007-3-2 22:26:48的发言:
看了链表 理解了链表的概念了 但是关于创建链表有疑问
以下面的为例:
#define NULL 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
int num;
int age;
struct stu *next;
};
TYPE *creat(int n)
{
struct stu *head,*pf,*pb;
int i;
for(i=0;i<n;i++)
{
pb=(TYPE*) malloc(LEN); // 申请了一个节点
printf("input Number and Age\n");
scanf("%d%d",&pb->num,&pb->age); // 对节点进行了初始化
if(i==0) // 若是第一个节点,表明是链表头
pf=head=pb; //将head指针、pf指针指向当前节点
else pf->next=pb; //若不是第一个节点,则将新节点挂在对尾,pf指针为上一个节点指针
pb->next=NULL; //这个应该是把pb作为链表尾
pf=pb; //将新节点指针赋给PF,准备接受新的节点
}
return(head);//链表建立成功,返回链表头
}


2007-03-03 11:49
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 
pf=pb; //将新节点指针赋给PF,准备接受新的节点
这句不怎么明白
图片附件: 游客没有浏览图片的权限,请 登录注册

应该怎么表示
2007-03-03 14:17
jusnxie
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-3-3
收藏
得分:0 

pb是新节点指针,pf是当前链表的最后节点指针,
pf->next = pb;pb->next = NULL;就是将pb挂在pf的后面,成为新的尾节点;
pf = pb;// 就是将新的尾节点指针赋给pf,保证下一个循环进来的时候,pf所指向的是尾节点。

再一次循环进来的时候,pb是另一个新节点的地址,同理将pb挂在pf的后面,以此循环,最终形成链表。

head ---> point1--->point2---->pf---->NULL

上面的每一个节点都曾经是pb;

2007-03-03 19:59
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 
解决了。。找了老谭的书看看 明白了
2007-03-03 20:01
alading664
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-1-25
收藏
得分:0 

链表也是数据结构的一种。

2007-03-03 23:47
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 
新问题了
2007-03-04 15:05
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 

#include <conio.h>
#include<stdlib.h>
#include "stdio.h"
//#define NULL 0
#define LEN sizeof(struct stuinfo)
struct stuinfo /*学生信息结构体*/
{ int num;/*注意定义*/
int score;
struct stuinfo *next;
};
typedef struct stuinfo STU;

STU *creat(int n)
{ int i;
STU *head,*p1,*p2;
for(i=0;i<n;i++)
{
p1=(STU *)malloc(LEN);

if(p1==NULL)printf("ERROR");
printf("Input the student number and score like this \"**-**\":");
scanf("%d-%d",&p1->num,&p1->score); /*这里输入格式要注要一下*/
if(i==0)
p2=head=p1;
else
p2->next=p1;
p1->next=NULL;
p2=p1;
}
return(head);
}

main()
{int n;
STU *head,*p;
STU *creat(int n);
void save(STU *p);
printf("Input amount of the student:");
scanf("%d",&n);
head=creat(n);
for(p=head;head;head=head->next)
printf("%d-%d ",head->num,head->score);
head=p;
save(head);
}

void save(STU *p)
{
FILE *fp;
fp=fopen("d:\\date.txt","w");
do
{fprintf(fp,"The number of the stendent is %d\n",p->num); /*这里改为内容*/
fprintf(fp,"The score of the %d is: %d\n\n",p->num,p->score);
p=p->next;
}
while(p->next!=0);
}


谁有强殖装甲第二部,可以Q我460054868
2007-03-04 18:24
快速回复:链表 程序有问题(已解决)
数据加载中...
 
   



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

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