存放学生表的链表的结点类型StudType定义为:typedef struct studnode/*存储学号*/int no;/*存储姓名*/char name[8];/*存储性别*/char sex[2];/*存储班号*/char class[4];struct studnode *next:/*存储指向下一个学生的指针*/ StudType :11
11 存放学生表的链表的结点类型StudType定义 为: typedef struct studnode { int no; /*存储学号*/ char name[8]; /*存储姓名*/ char sex[2]; /*存储性别*/ char class[4]; /*存储班号*/ struct studnode *next; /*存储指向下一个学生的指针*/ } StudType;
1张斌男9901headL8刘丽女9902学生表构成34李英女9901的链表如右图所男20陈华9902示。其中的head男王奇129901为第一个数据元男26董强9902素的指针。5王萍女9901Λ学生表构成的链表12
12 head 1 张斌 男 9901 8 刘丽 女 9902 34 李英 女 9901 20 陈华 男 9902 12 王奇 男 9901 26 董强 男 9902 5 王萍 女 9901 ∧ 学生表构成 的链表如右图所 示。其中的head 为第一个数据元 素的指针。 学生表构成的链表
对于“学生表”这种数据结构,可以进行一系列的运算例如:增加一个学生记录删除一个学生记录查找性别为“女”的学生记录查找班号为"9902”的学生记录等等13
13 对于“学生表”这种数据结构,可以进行 一系列的运算, 例如: ■增加一个学生记录 ■删除一个学生记录 ■查找性别为“女”的学生记录 ■ 查找班号为“9902”的学生记录等等
从前面介绍的两种存储结构看到,同样的运算,在不同的存储结构中,其实现过程是不同的运算实现1存储结构1运算实现k逻辑结构运算实现1存储结构n运算实现k14
14 从前面介绍的两种存储结构看到,同样 的运算,在不同的存储结构中,其实现过程 是不同的。 运算实现1 逻辑结构 存储结构1 存储结构n . 运算实现k . 运算实现1 运算实现k
例如,查找学号为20的学生的姓名:对于Stud数组,可以从StudO开始比较,StudJ0l.no不等于20,再与Stud1].no比较,..直到Stud[3].no等于20,返回Stud[3].name。对于head为首结点指针的链表,从head所指结点开始比较,head->no不等于20,从它的next得到下一个结点的地址,再与下一个结点的no域比较,,直到某结点的no域等于20!返回其name域15
15 例如,查找学号为20的学生的姓名: 对于Stud数组,可以从Stud[0]开始比较, Stud[0].no不等于20,再与Stud[1].no比较,., 直到Stud[3].no等于20,返回Stud[3].name。 对于head为首结点指针的链表,从head所 指结点开始比较,head->no不等于20,从它的 next得到下一个结点的地址,再与下一个结点 的no域比较,.,直到某结点的no域等于20, 返回其name域