《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-10.docx》由会员分享,可在线阅读,更多相关《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-10.docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、/存储数据的基地址/当前个数/顺序存储结构为SqList/初始化/销毁顺序表/取值/插入/删除顺序表A中所有值为item的元素/输出顺序表/为顺序表分配一个大小为MAXSIZE的数组空间/存储分配失败退出/空表长度为0include include using namespace std;/函数结果状态代码#define OK 1define ERROR 0define OVERFLOW -2 /Status是函数的返回值类型,其值是函数结果状态代码 typedef int Status;define MAXSIZE 100 typedef struct SqList int *elem; i
2、nt length;SqList;Status InitList(SqList &L);Status DestroyList(SqList &L);Status GetElem(SqList Lz int i,int &e);Status Listinsert(SqList &L,int ifint e); void Deleteltem(SqList &A,int item);void PrintList(SqList L);int main()(SqList 1;InitList(1);Listinsert(1,lz1);Listinsert(1,2,3);Listinsert(1,3,3
3、);Listinsert(1,4,4);coutc”线性表为:”;PrintList (1);int item = 3;Deleteltem(1,item);coutcc”删除,Ycitemc”后的线性表为:”;PrintList(1);DestroyList(1);return 0; )/初始化Status InitList(SqList &L) /构造一个空的顺序表LL.elem=new intMAXSIZE; if(!L.elem) exit(OVERFLOW);L.length = 0; return OK;)/销毁顺序表Status DestroyList(SqList &L)/释放
4、空间/表长又变成0if (L.length)delete L.elem;/取值 StatusL.length = 0;GetElem(SqList L,int i,int &e)if (iL.length) return ERROR; e=L.elemi-l;return OK;/判断i值是否合理,假设不合理,返回ERROR /elemi-1单元存储第i个数据元素/插入Status Listinsert(SqList &L, int i, inte) /在顺序表L中第i个位置插入新的元素e, i值的合法范围是length+1if (iL.lengths1) return ERROR; if(L
5、.length=MAXSIZE) return ERROR; for (int j=L.length-1;j=i-l;j-) L.elemj+1=L.elemj;L.elemi-1=e;+L.length;return OK;/i值不合法/当前存储空间已满/插入位置及之后的元素后移 /将新元素e放入第i个位置 /表长加1/输出顺序表void PrintList(SqList L)coutn;for (int i=l;i=L.length;i+)int e;GetElem(L,i,e);coute;if (i!=L.length) coutH, coutnnendl;)/删除顺序表A中所有值为item的元素 void Deleteltem(SqList &A,int item) /删除顺序表A中所有值为item的元素int k=0;for (int i=0;iA.length;i+)if(A.elemi!=item)/k记录值不等于item的元素个数/从前向后扫描顺序表/查找值不为item的元素A.elemk=A.elemi; k+;)A. length=k;/利用原表的空间记录值不为item的元素 /不等于item的元素增1 /顺序表A的长度等于k输出结果:线性表为:1, 3, 3, 4删除3后的线性表为:1, 4