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个结点不存在,不能插入