顺序表的初始化及基本操作WORD

上传人:汽*** 文档编号:511993056 上传时间:2023-03-06 格式:DOC 页数:8 大小:381.50KB
返回 下载 相关 举报
顺序表的初始化及基本操作WORD_第1页
第1页 / 共8页
顺序表的初始化及基本操作WORD_第2页
第2页 / 共8页
顺序表的初始化及基本操作WORD_第3页
第3页 / 共8页
顺序表的初始化及基本操作WORD_第4页
第4页 / 共8页
顺序表的初始化及基本操作WORD_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《顺序表的初始化及基本操作WORD》由会员分享,可在线阅读,更多相关《顺序表的初始化及基本操作WORD(8页珍藏版)》请在金锄头文库上搜索。

1、文档可能无法思考全面,请浏览后下载! #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INIT_SIZE 100 /线性表存储空间的初始分配量#define LINSTINCREMENT 10 /线性表存储空间的分配增量typedef int Status;#include #includetypedef int ElemType;int menu_select() /菜单函数 char c; do system(cls);

2、/运行前清屏 printf(tt*线性表的查找、插入、删除*n); /菜单选择 printf(tt| a. 建立一个线性表 | n); printf(tt| b. 查找线性表中第i个元素 | n); printf(tt| c. 在线性表中第i个位置插入一个元素 | n); printf(tt| d. 删除在线性表中第i个位置的元素 | n); printf(tt| e. 输出线性表中的所有元素 | n); printf(tt*n); printf(ttt请输入您的选择功能的序号(a-e):); c=getchar(); printf(n); printf(n); while(ce); retu

3、rn(c-a); /返回选择 typedef structint *elem; /存储空间基址int length; /当前长度int listsize; /当前分配的存储容量(以sizeof(ElemType)为单位) / SqList;SqList L;Status InitList_Sq(SqList &L) /构造一个新的线性表L。 int i,n; L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!L.elem) return ERROR; / 存储分配失败 L.length = 0; / 空表长度为0

4、 L.listsize = LIST_INIT_SIZE; / 初始存储容量 printf(请输入线性表的元素的个数:); scanf(%d,&n); for(i=0;in;i+) /读入元素 scanf(%d,&L.elemi); L.length =n; return OK; Status abc(SqList &L) /输出线性表中所有元素int i; for(i=0;iL.length;i+) /利用循环输出元素 printf(%d ,L.elemi); return OK;void LocateElem_Sq(SqList L, ElemType e) /查找线性表中的元素 int

5、i=0; ElemType *p; p = L.elem; while (i = L.length)&(*p!=e) /依次比较 *p+,i+; if (i = L.length) printf(元素%d在表中第%d个位置!n,e,i+1); else printf(表中没有元素%d!n,e); Status ListInsert_Sq(SqList &L, int i, ElemType e) / 在线性表L中插入新的元素e ElemType *p; int *newbase; if (i L.length+1) return ERROR; if (L.length = L.listsize

6、) / 当前存储空间已满,增加容量 ElemType *newbase = (ElemType *)realloc(L.elem, (L.listsize+LINSTINCREMENT)*sizeof (ElemType); if (!newbase) return ERROR; / 存储分配失败 L.elem = newbase; / 新基址 L.listsize += LINSTINCREMENT; / 增加存储容量 ElemType *q = &(L.elemi-1); / q为插入位置 for (p = &(L.elemL.length-1); p=q; -p) *(p+1) = *p

7、; / 插入位置及之后的元素右移 *q = e; / 插入e +L.length; / 表长增1 return OK; Status ListDelete_Sq(SqList &L, int i, ElemType &e) / 在顺序线性表L中删除第i个元素,并用e返回其值。 ElemType *p, *q; if (iL.length) return ERROR; / i值不合法 p = &(L.elemi-1); / p为被删除元素的位置 e = *p; / 被删除元素的值赋给e q = L.elem+L.length-1; / 表尾元素的位置 for (+p; p=q; +p) *(p-

8、1) = *p; / 被删除元素之后的元素左移 -L.length; / 表长减1 return OK; void main() /主函数 int n=0,a,e,i; for(;) switch(menu_select() /菜单选择 case 0: printf(tt*建立一个线性表*n); InitList_Sq(L); /建立新表 system(pause); break; case 1: printf(tt*查找一个元素*n); printf(输入要查找的元素:n); scanf(%d,&e); LocateElem_Sq( L,e); /查找元素 system(pause); br

9、eak; case 2: printf(tt*插入一个元素*n); printf(输入要插入的元素:n); scanf(%d,&e); printf(输入要插入的位置:n); scanf(%d,&i); ListInsert_Sq(L,i,e); /插入新元素 printf(ttt); system(pause); break; case 3: printf(tt*删除一个元素*n); printf(输入要删除的元素:n); scanf(%d,&e); printf(输入要删除元素的位置:n); scanf(%d,&i); ListDelete_Sq(L, i, e); /删除元素 printf(ttt); system(pause); break; case 4: printf(tt*输出线性表*n); abc(L); /输出线性表 system(pause); break; case 5: printf(tt-谢谢使用-n); printf(tttHave a Good Luck,Bye-bye!n);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号