数据结构线性表操作.pdf

上传人:l**** 文档编号:72485072 上传时间:2023-02-11 格式:PDF 页数:7 大小:160.76KB
返回 下载 相关 举报
数据结构线性表操作.pdf_第1页
第1页 / 共7页
数据结构线性表操作.pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《数据结构线性表操作.pdf》由会员分享,可在线阅读,更多相关《数据结构线性表操作.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-1.这是 p1list.h 自定义的头文件/-Head files for list in chapter 2-#include#include#include/预定义常量#define TRUE1#define FALSE0#define OK1#define ERROR0#define INFEASIBLE-1#define OVERFLOW-2#define GUARD-99#define MAXLEN 255/线性表(顺序表)的最大长度#define LIST_MAX_SIZE 50/链表的最大长度/函数结果的类型typedef int Status;typedef int Elem

2、Type;typedef struct ElemType*elem;int length;int listsize;SqList;typedef struct List int elemMAXLEN;int length;List;typedef unsigned char SStringMAXLEN+1;typedef int ElemType;typedef struct LNode int data;struct LNode*next;LNode,*LinkList;-.可修编-/-p1list.cpp-void InitList(List&L);/*此函数用于初始化一个保持增序的线性表

3、Lvoid InitList0(List&L);/*此函数用于初始化一个线性表Lvoid printList(List L);void createTwoLists(List&La,List&Lb);void MergeList(List La,List Lb,List&Lc);/*TBD1*将 Lb 归并到 La 表,形成新表 Lcvoid Union(List&La,List Lb);/*TBD2*线性La和 Lb分别表示两个集合,求新集合LaLa U Lb(U并操作)void ReverseList(List&L);/*TBD3*将线性表 L 逆转void deleteall(List&

4、L,int x,int y);/*TBD4*从一给定的顺序表 L 中删除元素值在x 和 y 之间的所有元素(x=y)/-lottery.cpp-void build(LinkList&L,int size);/*TBD1*乙负责-初始化循环链表 Lvoid display(LinkList L);/*TBD1*甲负责-在屏幕上输出链表 L 的容void select10(LinkList&L);/*TBD2*乙负责-实现体育彩票(10 选 7)void select36(LinkList&L);/*TBD2*甲负责-实现体育彩票(36 选 7)void freeList(LinkList&L)

5、;/*TBD3*甲负责-释放初始化链表 L 所使用的存void mainlottery();/*TBD3*乙负责-实现主函数/-LinkedList.cpp-Status CreateList_L(LinkList&L,int n);/采用尾插法创建一个带头结点的长度为n 的单链表 LStatus CreateList_L_NoHead(LinkList&L,int n);/采用尾插法创建一个无头结点的长度为n的单链表 Lvoid printList_L(LinkList L);/输出带头结点的单链表 Lvoid printList_L_NoHead(LinkList L);/输出不带头结点的

6、单链表LStatus GetElem_L(LinkList L,int i,ElemType&e);Status ListInsert_L(LinkList&L,int i,ElemType e);Status ListDelete_L(LinkList&L,int i,ElemType&e);void MergeList_L(LinkList&La,LinkList&Lb,LinkList&Lc);void deleteallnodes(LinkList&L,ElemType min,ElemType max);void ChangeLinkList01J(LinkList&L);Statu

7、s reorder5(LinkList&L);/-p1list.cpp 例 2-2-12-void deleteall_1(List*L,int x);void deleteall_2(List*L,int x);void deleteall_3(List*L,int x);2.这是线性表操作代码:/实验一:设计一个程序实现线性表上并操作。-.可修编-/e1list.cpp:定义控制台应用程序的入口点。/#include p1list.h/*此函数用于初始化一个保持增序的线性表L*L 的初值是通过键盘按照递增的次序一个自然数一个自然数输入的。*/void InitList(List&L)/增序

8、的;int i=0,d;L.elem0=GUARD;/-99printf(n 输入某线性表各个元素的值(自然数),%d 表示输入结束!n,GUARD);do scanf(%d,&d);if(d!=GUARD)if(i!=0&d L.elemi-1)printf(n 这里要初始化一个保持增序的线性表,请输入一个不小于的%d自然数,L.elemi-1);else L.elemi+=d;if(i=MAXLEN)printf(n 该线性表长度达到最大值n);while(d!=GUARD)&(iMAXLEN);L.length=i;/个数,-99 没有保存;/*此函数用于初始化一个线性表L*L 的初值是

9、通过键盘一个自然数一个自然数输入的。*/void InitList0(List&L)int i=0,d;L.elem0=GUARD;printf(输入某线性表各个元素的值(自然数),%d 表示输入结束!n,GUARD);do scanf(%d,&d);if(d!=GUARD)L.elemi+=d;if(i=MAXLEN)printf(n 该线性表长度达到最大值n);while(d!=GUARD)&(iMAXLEN);L.length=i;void printList(List L)int i;printf(线性表%d:n,L.length);for(i=0;i MAXLEN)Lb.length

10、=MAXLEN-La.length;/*TBD1*将 Lb 归并到 La 表,形成新表 Lc*TBD1*要求 L0.c 保持有序,允许出现重复元素*TBD1*/void MergeList(List La,List Lb,List&Lc)int i=0,j=0,m=0;while(iLa.length&j=Lb.elemj)Lc.elemm+=Lb.elemj+;else Lc.elemm+=La.elemi+;while(iLa.length)/有剩余Lc.elemm+=La.elemi+;while(jLb.length)Lc.elemm+=Lb.elemj+;Lc.length=La.l

11、ength+Lb.length;/*TBD2*线性 La 和 Lb 分别表示两个集合,求新集合LaLa U Lb(U并操作)*TBD2*注意集合里不允许出现重复元素*TBD2*/void Union(List&La,List Lb)int i=0,j=0,t,m=La.length;t=m;while(iLa.length&jLb.length)if(La.elemi=i+1)La.elemt=La.elemt-1;t-;La.elemi+=Lb.elemj+;t=+La.length;while(jLb.length)/Lb 还没有到头La.elemi+=Lb.elemj+;La.lengt

12、h=i;/*TBD3*将线性表 L 逆转*TBD3*要求使用最少的附加空间,空间复杂度为O(1)。*TBD3*/void ReverseList(List&L)int j,i,n,c;j=L.length-1;n=L.length/2;/取半;for(i=0;in;i+)c=L.elemi;L.elemi=L.elemj;L.elemj-=c;/*TBD4*从一给定的顺序表 L 中删除元素值在 x 和 y 之间的所有元素(x=y)*TBD4*要求以较高的效率实现,空间复杂度为O(1)。*TBD4*/void deleteall(List&L,int x,int y)int i=0,n=0;fo

13、r(;iL.length;i+)if(L.elemiy)/机智啊把对的重新放一遍;L.elemn+=L.elemi;L.length=n;int main(int argc,char*argv)List La,Lb,Lc;int x,y,n,h;int j;-.可修编-while(1)printf(n1-创建数组 La,Lb,2-合并数组 La,Lb 到 Lc,含重复元素 3-归并 Lb 到La,不重复n);printf(4-逆转数组,5-删除数组中 x-y 之间的值 6-遍历 La,7-遍历 Lb,n);printf(输入大于 7 的数退出n);scanf(%d,&h);/system(cl

14、s);/盖住啦。switch(h)case 1:createTwoLists(La,Lb);break;case 2:MergeList(La,Lb,Lc);printList(Lc);break;case 3:Union(La,Lb);printList(La);break;case 4:printf(逆转数组 1-La 或 2-Lb);scanf(%d,&j);if(j=1)ReverseList(La);printList(La);elseReverseList(Lb);printList(Lb);break;case 5:printf(输入 x,y,顺序表 L 中删除元素值在 x 和 y 之间的所有元素(x7)break;/mainlottery();printf(n 键入任意字符程序退出.);getchar();return 0;-.可修编-

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

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁