您的位置:首页 > 编程语言 > C语言/C++

用指针处理链表

2015-04-10 12:40 281 查看
//用指针处理链表
//建立一个简单的链表,它由3个学生数据的结点组成,要求输出各结点中的数据
/*#include <stdio.h>
struct Student
{
int num;
float score;
struct Student *next;
};
int main()
{
struct Student a,b,c,*head,*p;
a.num = 10101;
a.score = 89.5;
b.num = 10103;
b.score = 90;
c.num = 10107;
c.score = 85;
head = &a;							//将结点a的起始地址赋给头指针head
a.next = &b;							//将结点b的起始地址赋给a结点的next成员
b.next = &c;							//将结点c的起始地址赋给b结点的next成员
c.next = NULL;							//将结点c的next成员不存放其他结点地址
p = head;							//使p也指向a结点
do
{
printf("%1d%5.1f\n",p->num,p->score);
p = p->next;						//使p指向下一结点
}while(p != NULL);						//输出完c结点后p的值为NULL,循环终止
return 0;
}*/
//写一函数建立一个有3名学生数据的单向动态链表
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long num;
float score;
struct Student *next;
};
int n;
struct Student * creat(void)
{
struct Student * head;
struct Student *p1,*p2;
n = 0;
p1 = p2 = (struct Student *)malloc(LEN);			//开辟一个新单元
scanf("%ld,%f",&p1->num,&p1->score);				//输入第1个学生的学号和成绩
head = NULL;
while(p1->num != 0)
{
n = n+1;
if(n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct Student *)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p1->next = NULL;
return (head);
}
int main()
{
struct Student *pt;
pt = creat();
printf("\nnum:%ld\nscore:%5.1f\n",pt->num,pt->score);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 链表 struct 指针