数据结构线性表设计代码.docx
- 文档编号:5692895
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:22
- 大小:162.95KB
数据结构线性表设计代码.docx
《数据结构线性表设计代码.docx》由会员分享,可在线阅读,更多相关《数据结构线性表设计代码.docx(22页珍藏版)》请在冰点文库上搜索。
数据结构线性表设计代码
河南城建学院计算机科学与工程学院
《数据结构》实验报告
实验名称:
_实验一 线性表操作 成绩:
___________
专业班级:
_信管2班_ 姓名:
__张凯迪__学号:
___083215217___
实验日期:
2016年 4月 27日
一、实验目的
1.掌握用C++/C语言调试程序的基本方法。
2.掌握线性表的基本运算,如插入、删除等。
二、实验内容
线性表在顺序、链式存储结构上的插入元素,删除元素运算。
三、实验要求
1.用C++/C完成算法设计和程序设计并上机调试通过。
2.撰写实验报告,提供实验结果和数据。
3.分析算法,并简要给出算法设计小结和心得。
四、程序实现
源程序清单
五、写出输入数据及运行结果、算法分析
上述程序在VisualC++6.0环境下加以实现。
经过多次测试,程序运行正确。
例如:
输入…,运行结果如图…所示,图中显示了…
(一)顺序表的基本操作源代码
#include
usingnamespacestd;
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
typedefstruct{//结构体
ElemType*elem;
intlength;
intlistsize;
}SqList;
SqListLx;
StatusInitList_Sq(SqList&L)//分配空间
{L.elem=newElemType[LIST_INIT_SIZE];
if(!
L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
returnOK;
}
StatusListInsert(SqList&L,inti,ElemTypee)//插入新元素
{int*q,*p;ElemType*newbase;
if(i<1||i>L.length+1)returnERROR;
if(L.length>=L.listsize)
{newbase=newElemType[L.listsize+LISTINCREMENT];
if(!
newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
returnOK;
}
StatusListlength(SqListL)//长度
{int*p=L.elem;//判断线形表是否存在
while(p)
{return(L.length);}
}
StatusGetElem(SqListL,inti,ElemType&e)//取元素
{if(i<1||i>L.length)
returnERROR;
else
{e=L.elem[i-1];
returne;
}
}
voidMergeList(SqListLa,SqListLb,SqList&Lc)//合并
{ElemTypeai,bj;
InitList_Sq(Lc);
inti=1,j=1,k=0;
intLa_len,Lb_len;
La_len=Listlength(La);
Lb_len=Listlength(Lb);
while((i<=La_len)&&(j<=Lb_len))
{GetElem(La,i,ai);GetElem(Lb,j,bj);
if(ai<=bj)
{ListInsert(Lc,++k,ai);++i;}
else
{ListInsert(Lc,++k,bj);++j;}
}
while(i<=La_len)
{GetElem(La,i++,ai);
ListInsert(Lc,++k,ai);
}
while(j<=Lb_len)
{GetElem(Lb,j++,bj);
ListInsert(Lc,++k,bj);
}
}
voidshow(SqListL,inti)//显示
{intj;ElemTypek;
cout<<"顺序表显示如下:
"< for(j=0;j {k=L.elem[j]; cout< if(j==i-1&&i>0) {k=L.elem[j];cout< cout< } voidcreate(SqList&L,intn)//输入元素 {inte; for(inti=0;i {cin>>e; L.elem[i]=e; L.length=i+1;} } StatusListDelete_Sq(SqList&L,inti,ElemType&e)//删除 {ElemType*p,*q; if(i<1||i>L.length)returnERROR; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for(++p;p<=q;++p)*(p-1)=*p; --L.length; returnOK; } StatusListxiugei(SqList&L,inti,ElemType&e)//修改 {if(i<1||i>L.length) returnERROR; else {L.elem[i-1]=e; returnOK;} } voidshuru(SqList&L1)//顺序表的创建 {inta; InitList_Sq(L1); cout<<"请输入顺序表的长度: "; cin>>a; cout<<"请输入顺序表的元素(共"< create(L1,a); show(L1,a); } voidchaxun(SqList&L1)//取第i个位置的元素 {intj;ElemTypee1; cout<<"请选择所要取出元素的位置: "; cin>>j; while(j<0||j>Listlength(L1)) {cout<<"输入有误,请重新输入"< cout<<"请选择所要取出元素的位置: "; cin>>j;} GetElem(L1,j,e1); cout<<"取出的元素为: "< voidxiugai(SqList&L1)//修改第i个位置的元素 {inta; intj;ElemTypee1; a=L1.length; cout<<"请选择所要修改元素的位置: "; cin>>j; while(j<0||j>Listlength(L1)) {cout<<"输入有误,请重新输入"< cout<<"请选择所要修改元素的位置: "; cin>>j;} cout<<"要修改成的元素: "; cin>>e1; Listxiugei(L1,j,e1); cout<<"修改后的顺序表数据: "< show(L1,a); } voidshanchu(SqList&L1)//删除顺序表里的元素 {inta; intj;ElemTypee1; a=L1.length; cout<<"请选择所要删除元素的位置: "; cin>>j; while(j<0||j>Listlength(L1)) {cout<<"输入有误,请重新输入"< cout<<"请选择所要删除元素的位置: "; cin>>j;} ListDelete_Sq(L1,j,e1); cout<<"修改后的顺序表数据: "< show(L1,a-1); } voidcharu(SqList&L1)//插入元素到顺序表里 {inta;intj;ElemTypee1; a=L1.length; cout<<"请选择所要插入元素的位置: "; cin>>j; while(j<0||j>Listlength(L1)) {cout<<"输入有误,请重新输入"< cout<<"请选择所要插入元素的位置: "; cin>>j;} cout<<"要插入的元素: "; cin>>e1; ListInsert(L1,j,e1); cout<<"修改后的顺序表数据:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 设计 代码