数据结构严蔚敏上机代码完整Word文档格式.docx
- 文档编号:13772689
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:20
- 大小:19.25KB
数据结构严蔚敏上机代码完整Word文档格式.docx
《数据结构严蔚敏上机代码完整Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构严蔚敏上机代码完整Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
//当前长度
intlistsize;
//当前分配的存储容量(以sizeof(ElemType)为单位)
}SqList;
StatusInitList_Sq(SqList&
L){
//构造一个空的线性表L
L.elem=(ElemType*)malloc(list_init_size*sizeof(ElemType));
if(!
L.elem)exit(OVERFLOW);
//存储分配失败
L.length=0;
//空表长度为0
L.listsize=list_init_size;
//初始存储容量
returnOK;
}//Initlist_Sq
StatusListInsert_Sq(SqList&
L,inti,ElemTypee){
//在顺序线性表L中第i个位置之前插入新的元素e,
//i的合法值为1<
=i<
=ListLength_Sq(L)+1
ElemType*p,*q,*newbase;
//定义指针
if(i<
1||i>
L.length+1)
returnERROR;
//i值不合法
if(L.length>
=L.listsize){//当前存储空间已满,增加分配
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!
newbase)exit(OVERFLOW);
//存储分配失败
L.elem=newbase;
//新基址
L.listsize+=LISTINCREMENT;
//增加存储容量
}
q=&
(L.elem[i-1]);
//q为插入位置
for(p=&
(L.elem[L.length-1]);
p>
=q;
--p)
*(p+1)=*p;
//插入位置及之后的元素右移
*q=e;
//插入e
++L.length;
//表长增1
}//ListInsert_Sq
StatusListDelete_Sq(SqList&
L,inti,ElemType&
e){
//在顺序线性表L中删除第i个元素,并用e返回其值
=ListLength_Sq(L)
ElemType*p,*q;
if((i<
1)||(i>
L.length))
p=&
//p为被删除元素的位置
e=*p;
//被删除元素的值赋给e
q=L.elem+L.length-1;
//表尾元素的位置
for(++p;
p<
++p)
*(p-1)=*p;
//被删除元素之后的元素左移
--L.length;
//表长减1
}//ListDelete_sq
voiddisplay(SqListL)
{//定义for循环函数
inti;
for(i=0;
i<
=L.length-1;
i++)
printf("
%d\n"
L.elem[i]);
}
intLocateElem_Sq(SqListL,ElemTypee)
{
//在顺序线性表L中查找第1个值与e满足compare()的元素的位序
//若找到,则返回其在L中的位序,否则返回0
ElemType*p;
inti=1;
//i的初值为第一个元素的位序
p=L.elem;
//p的初值为第一个元素的存储位置
while(i<
=L.length&
&
*p++!
=e)++i;
=L.length)returni;
elsereturn0;
}//LocateElem_Sq
voidMergeList_Sq(SqListLa,SqListLb,SqList&
Lc){
//已知顺序线性表La和Lb的元素按值非递减排列
//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按非递减排列
ElemType*pa,*pb,*pc,*pa_last,*pb_last;
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));
Lc.elem)exit(OVERFLOW);
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<
=pa_last&
pb<
=pb_last)
{
//归并
if(*pa<
=*pb)
*pc++=*pa++;
else
*pc++=*pb++;
=pa_last)*pc++=*pa++;
//插入La的剩余元素
while(pb<
=pb_last)*pc++=*pb++;
//插入Lb的剩余元素
}//MergeList_Sq
voidmain()
/*
SqListL;
//定义线性表
InitList_Sq(L);
//调用空表
//插入数据
ListInsert_Sq(L,1,10);
ListInsert_Sq(L,2,20);
ListInsert_Sq(L,1,30);
ListInsert_Sq(L,3,40);
printf("
插入后:
\n"
);
display(L);
//调用循环函数
ListInsert_Sq(L,3,100);
//在L表第三个位置插入100
ElemTypee;
//定义e
ListDelete_Sq(L,3,e);
//删除L表的第三个元素,用e表示
删除后:
被删除元素:
%d\n\n\n\n"
e);
*/
SqListLa,Lb,Lc;
InitList_Sq(La);
ListInsert_Sq(La,1,3);
ListInsert_Sq(La,2,5);
ListInsert_Sq(La,3,8);
ListInsert_Sq(La,4,11);
La插入后:
display(La);
InitList_Sq(Lb);
ListInsert_Sq(Lb,1,2);
ListInsert_Sq(Lb,2,6);
ListInsert_Sq(Lb,3,8);
ListInsert_Sq(Lb,4,9);
ListInsert_Sq(Lb,5,11);
ListInsert_Sq(Lb,6,15);
ListInsert_Sq(Lb,7,20);
Lb插入后:
display(Lb);
MergeList_Sq(La,Lb,Lc);
归并后:
display(Lc);
inta=LocateElem_Sq(Lc,5);
a);
第三次上机:
typedefstructLNode
ElemTypedata;
structLNode*next;
}LNOde,*LinkList;
StatusGetElem_L(LinkListL,inti,ElemType&
e)
//L为带头结点的单链表的头指针
//当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR
LinkListp;
p=L->
next;
intj=1;
//初始化,p指向第一个结点,j为计数器
while(p&
j<
i)
{
//顺指针向后查找,直到p指向第i个元素或p为空
p=p->
++j;
p||j>
//第i个元素不存在
e=p->
data;
//取第i个元素
}//GetElem_L
StatusListInsert_L(LinkList&
L,inti,ElemTypee)
//在带头结点的单链线性表L中第i个位置之前插入元素e
LinkListp,s;
p=L;
intj=0;
i-1)
}//寻找第i-1个结点
i-1)returnERROR;
//i小于或者大于表长+1
s=(LinkList)malloc(sizeof(LNode));
//生成新结点
s->
data=e;
next=p->
//插入L中
p->
next=s;
}//ListInsert_L
StatusListDelete_L(LinkList&
//在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
LinkListp,q;
while(p->
next&
//寻找第i个结点,并令p指向其前趋
++j;
(p->
next)||j>
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 严蔚敏 上机 代码 完整