基本信息
文件名称:数据结构(C语言版)课件 第2章 线性表.pptx
文件大小:1.54 MB
总页数:79 页
更新时间:2025-06-04
总字数:约2.39千字
文档摘要

0-1开课;;学籍管理问题;2.1线性表的逻辑结构;线性表的定义;线性表的逻辑特征;线性表的抽象数据类型定义;2.2线性表的顺序存储和实现;;;顺序表的存储结构定义(数据类型描述);;存储结构与存取结构;建一个空表,初始化成功返回1,否则返回0;顺序表基本运算的实现——建立;intLength(SqList*L)

{

returnL-length;

};取顺序表L中序号为i的数据元素,输出该元素的值;顺序表基本运算的实现——按值查找;在顺序表L的第i个元素前插入一个新元素x,若插入成功,表中增加一个新元素;否则给出失败信息。;注意边界条件;intInsert(SqList*L,inti,ElemTypex)

{intm;

for(m=L-length;m=i;m--)/*m表示元素序号*/

L-data[m]=L-data[m-1];

L-data[i-1]=x;

L-length++;

return1;

};

for(m=L-length;m=i;m--)

L-data[m]=L-data[m-1];;删除线性表L中的第i个数据元素,若删除成功,表中减少一个元素;否则给出失败信息。;intInsert(SeqList*L,inti,ElemTypee)

{

e=L-data[i-1];//如果需要,先取出ai的值保存

for(i;i=L-length-1;++i)

L-data[i-1]=L-data[i];//结点前移

L-length--;//表长-1

return1;//删除成功

};

for(i;i=L-ength-1;++i)

L-data[i-1]=L-data[i];;2.3线性表的链式存储和实现;线性表的链式存储结构;单链表的存储结构;单链表的存储结构;单链表的存储结构;存储密度;存储密度;单链表的存储结构定义(数据类型描述);单链表基本运算的实现——初始化;单链表基本运算的实现——遍历;;;voidPrintList(LNode*L)

{

while(p!=NULL)

{printf(%d,p-data);

p=p-next;/*注意不能写作p++*/

}

printf(\n);

}

};单链表基本运算的实现——求长度;单链表基本运算的实现——按位置查找;;单链表基本运算的实现——按值查找;单链表基本运算的实现——插入;intInsert(LNode*L,inti,ElemTypex)

{

LNode*s=NULL,*p=L;/*工作指针p初始化为指向头结点*/

};;单链表基本运算的实现——删除;单链表基本运算的实现——建立单链表;单链表基本运算的实现——建立单链表;尾插法建表;尾插入法建立单链表;单链表基本运算的实现——建立单链表;头插法建表;头插入法建立单链表;循环链表的引入;单向循环链表;单向循环链表;单向循环链表的存储结构定义(数据类型描述);单向循环链表基本运算的实现;单向循环链表基本运算的实现——求表长;双向链表的引入;双链表的存储结构定义;双向链表基本运算的实现——插入;双向链表基本运算的实现——插入;intListInsert_Dul(DuLnode*L,inti,ElemTypex)

{//在双向链表的第i个结点前插入一个新元素x

DuLnode*p=L,*s=NULL;/*工作指针p初始化为指向头结点*/

intcount;

while(p!=NULLcounti)

{p=p-next;count++;}//找第i个结点

if(p==NULL||counti)

{printf("参数i错");return0);}//第i个结点不存在,不能插入