数据结构-第2章线性表剖析.ppt

数据结构-第2章线性表剖析

第二章 线性表 教学目的与要求 熟练掌握顺序表的定义、向量 (或一维数组)的存储、插入、删除元素等运算。 掌握链式表的建立、插入、删除元素等运算。 熟悉链表的连接,多项式的加、减运算等操作。 熟悉循环链、双向链的操作。 重点与难点 重点:概念、基本运算实现方法。 难点:应用。 第二章 线性表 教学内容 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.3.1 线性链表 2.3.2 循环链表 2.3.3 双向链表 2.4 一元多项式的表示及相加 例3、学生健康情况登记表如下: 单链表示意图如下: …… 110 …… 130 135 …… 160 头指针 head 165 170 …… 200 205 …… 单链表上基本运算的实现 1)创建单链表 在链表的头部插入结点建立单链表 算法如下: LinkList Creat_LinkList1( ) { LinkList L=NULL; /*空表*/ Lnode *s; int x; /*设数据元素的类型为int*/ scanf("%d",x); while (x!=flag) { s=malloc(sizeof(LNode)); s-data=x; s-next=L; L=s; scanf ("%d",x); } return L; } 单链表上基本运算的实现 在单链表的尾部插入结点建立单链表 算法如下: LinkList Creat_LinkList2( ) { LinkList L=NULL; Lnode *s,*r=NULL; int x; /*设数据元素的类型为int*/ scanf("%d",x); while (x!=flag) { s=malloc(sizeof(LNode)); s-data=x; if (L==NULL) L=s; /*第一个结点的处理*/ else r-next=s; /*其它结点的处理*/ r=s; /*r 指向新的尾结点*/ scanf("%d",x); } if ( r!=NULL) r-next=NULL; /*对于非空表,最后结点的指针域放空指针*/ return L; } 单链表上基本运算的实现 2)求表长 设L是带头结点的单链表(线性表的长度不包括头结点)。 算法如下: int Length_LinkList1 (LinkList L) { Lnode * p=L; /* p指向头结点*/ int j=0; while (p-next) { p=p-next; j++ } /* p所指的是第 j 个结点*/ return j; } 单链表上基本运算的实现 2)求表长 设L是不带头结点的单链表。 算法如下: int Length_LinkList2 (LinkList L) { Lnode * p=L; int j; if (p==NULL) return 0; /*空表的情况*/ j=1; /*在非空表的情况下,p所指的是第一个结点*/; w

文档评论(0)

1亿VIP精品文档

相关文档