正在加载图片...
在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把 它称为指针域 可在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域内又存放 第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接 其指针域可赋为0。这样一种连接方式,在数据结构中称为链表〃。 下图为最一简单链表的示意图。 1249 1356 1475 1021 1249 1356 1475 1021 lull 图中,第0个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个 指针变量。以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号num, 姓名name,性别sex和成绩 score等。另一个域为指针域,存放下一结点的首地址。链表中 的每一个结点都是同一种结构类型。 例如,一个存放学生学号和成绩的结点应为以下结构: struct stu i int num int score struct stu next 前两个成员项组成数据域,后一个成员项next构成指针域,它是一个指向stu类型结构 的指针变量 链表的基本操作对链表的主要操作有以下几种: 1.建立链表 2.结构的查找与输出 3.插入一个结点 4.删除一个结点 下面通过例题来说明这些操作。 【例11.9】建立一个三个结点的链表,存放学生数据。为简单起见,我们假定学生数据结 构中只有学号和年龄两项。可编写一个建立链表的函数 creat。程序如下 #define null o #define type struct stu #define len sizeof (struct stu) struct s struct stu next TYPE *creat(int n struct stu shead, *pf, *pb for(i=0; i<n: i++)在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把 它称为指针域。 可在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域内又存放 第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接, 其指针域可赋为 0。这样一种连接方式,在数据结构中称为“链表”。 下图为最一简单链表的示意图。 图中,第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个 指针变量。以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num, 姓名 name,性别 sex 和成绩 score 等。另一个域为指针域,存放下一结点的首地址。链表中 的每一个结点都是同一种结构类型。 例如,一个存放学生学号和成绩的结点应为以下结构: struct stu { int num; int score; struct stu *next; } 前两个成员项组成数据域,后一个成员项 next 构成指针域,它是一个指向 stu 类型结构 的指针变量。 链表的基本操作对链表的主要操作有以下几种: 1. 建立链表; 2. 结构的查找与输出; 3. 插入一个结点; 4. 删除一个结点; 下面通过例题来说明这些操作。 【例 11.9】建立一个三个结点的链表,存放学生数据。为简单起见, 我们假定学生数据结 构中只有学号和年龄两项。可编写一个建立链表的函数 creat。程序如下: #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++)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有