ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:22KB ,
资源ID:11418450      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11418450.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构总结.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构总结.docx

1、数据结构总结实验内容与步骤:实现顺序表初始化、插入、删除算法,代码如下:#include #include #define MaxSize 100typedef char ElemType;typedef struct ElemType *elem; int length;SqList;int InitList_Sq(SqList &L)L.elem=(ElemType*)malloc(MaxSize*sizeof(ElemType); if(!L.elem) return 0; L.length = 0; return 1;int ListInsert_Sq(SqList &L,int i,

2、ElemType e) if(iL.length+1) return 0; ElemType *p; ElemType *q=&L.elemi-1; for(p=&L.elemL.length-1;p=q;-p) *(p+1)=*p; *q=e; +L.length; return 1;int ListDelete_Sq(SqList &L,int i,ElemType &e) if(iL.length) return 0; ElemType *p=&(L.elemi-1); e=*p; ElemType *q=L.elem+L.length-1; for(+p;p=q;+p) *(p-1)=

3、*p; -L.length; return 1;void Disp_Sq(SqList L)if(L.length=0) printf(此顺序表为空表!n); for(int i=0;iL.length;i+) printf(%c,L.elemi); printf(n);void main() ElemType e; SqList L; InitList_Sq(L); Disp_Sq(L); ListInsert_Sq(L,1,A); ListInsert_Sq(L,2,B); ListInsert_Sq(L,1,C); Disp_Sq(L); ListDelete_Sq(L,1,e); Di

4、sp_Sq(L); printf(删除的元素是:%cn,e);实验指导与数据处理:实验结果:此顺序表为空表! ABC BC 删除的元素是:A实验内容与步骤:实现循环队列初始化、入队、出队、求队列长度算法,代码如下:#include #include #define MAXQSIZE 5typedef char QElemType;typedef struct QElemType *base; int front; int rear;SqQueue;int InitQueue(SqQueue &Q) Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemT

5、ype); if(!Q.base) return 0; Q.front = Q.rear =0; return 1;int QueueLength(SqQueue Q) return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;int EnQueue(SqQueue &Q,QElemType e) if(Q.rear+1) % MAXQSIZE = Q.front) printf(队列为满队列!n); return 0; Q.baseQ.rear = e; Q.rear = (Q.rear+1) % MAXQSIZE; return 1;int DeQueue(SqQu

6、eue &Q,QElemType &e) if(Q.front = Q.rear) return 0; e = Q.baseQ.front; Q.front = (Q.front+1) %MAXQSIZE; return 1;void DispQueue(SqQueue Q) int m,i; m = QueueLength(Q); if(m =0) printf(该队列为空队列!n); for(i = Q.front; i%MAXQSIZE!=Q.rear; i+) printf(%c,Q.basei%MAXQSIZE); printf(n);void main() SqQueue Q; Q

7、ElemType e; InitQueue(Q); DispQueue(Q); EnQueue(Q,A); EnQueue(Q,B); EnQueue(Q,C); EnQueue(Q,D); printf(队列长度为:); printf(%dn,QueueLength(Q); printf(队列为:); DispQueue(Q); DeQueue(Q,e); printf(队列长度为:); printf(%dn,QueueLength(Q); printf(队列为:); DispQueue(Q); EnQueue(Q,E); printf(队列长度为:); printf(%dn,QueueLe

8、ngth(Q); printf(队列为:); DispQueue(Q); EnQueue(Q,F); printf(队列为:); DispQueue(Q); 实验指导与数据处理:实验结果:该队列为空队列! 队列长度为:4 队列为:ABCD 队列长度为:3 队列为: BCD 队列长度为:4 队列为: BCDE 队列为满队列! 队列为: BCDE实验内容与步骤:实现顺序栈初始化、入栈、出栈、取栈顶元素算法,代码如下:#include #include #define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef char SElemType

9、;typedef struct SElemType *base; SElemType *top; int stacksize;SqStack;int InitStack(SqStack &S) S.base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!S.base) return 0; S.top = S.base; S.stacksize = STACK_INIT_SIZE; return 1;int GetTop(SqStack S,SElemType &e) if(S.top = S.base) return

10、0; e = *(S.top-1); return 1;int Push(SqStack &S,SElemType e) if(S.top-S.base= S.stacksize)S.base = (SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S.base) return 0; S.top = S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+ = e; return 1;int Pop(SqStack &S,SElem

11、Type &e) if(S.top = S.base) return 0; e = *-S.top; return 1;void DispStack(SqStack S) /从栈顶到栈底输出元素 int i; if(S.top=S.base)printf(空栈!); for(i=S.top-S.base; i0; i-) printf(%c,S.basei-1); printf(n);void main() SElemType e; SqStack S; InitStack(S); Push(S,A); Push(S,B); Push(S,C); Push(S,D); printf(栈S为:)

12、; DispStack(S); GetTop(S,e); printf(栈顶元素是:); printf(%cn,e); Pop(S,e); printf(栈S为:); DispStack(S);实验指导与数据处理:实验结果:栈S为:DCBA 栈顶元素是:D 栈S为:CBA实验内容与步骤:掌握将一个链表删除得元素插入到另一个链表的算法。实现创建链表La,Lb,利用链表La和Lb构建一个新的链表Lc,使得链表Lc中包含属于La但不属于Lb中的元素算法,代码如下:#include #include typedef char ElemType;typedef struct LNode ElemType

13、 data; struct LNode *next;LNode,*LinkList;/链表的初始化int InitList_L(LinkList &L) L= (LinkList)malloc(sizeof(LNode); L-next=NULL; return 1;/链表插入int ListInsert(LinkList &L,int i,ElemType e) LinkList p; p=L; int j=0; while(p&jnext; +j; if(!p|ji-1) return 0; LinkList s=(LinkList)malloc(sizeof(LNode); s-data

14、=e; s-next=p-next; p-next=s; return 1;/链表删除int ListDelete_L(LinkList &L,int i,ElemType &e) LinkList p; p=L; int j=0; while(p-next&jnext; j+; if(!(p-next)|ji-1) return 0; LinkList q=p-next; p-next=q-next; e=q-data; free(q); return 1;/链表显示void Disp_L(LinkList L) LinkList p=L-next; if(!p) printf(此链表为空!

15、); while(p) printf(%c,p-data); p=p-next; printf(n);/假设利用两个单链表LA和LB分别表示两个集合A和B,现要求一个新的集合C=A-B,即两个集合的差。void sample(LinkList La, LinkList Lb, LinkList &Lc) LinkList pa,pb,r,s; pa = La-next; Lc = (LinkList)malloc(sizeof(LNode);/生成新链表Lc的头结点 Lc-next = NULL; r = Lc; while(pa) pb = Lb-next; while( pb & pb-d

16、ata!=pa-data) /查看La中当前结点数据是否存在于Lb中 pb=pb-next; if(pb = NULL) /若La中当前结点数据不存在于Lb中,则将其复制到Lc新节点中 s = (LinkList)malloc(sizeof(LNode); s-next = NULL; s-data = pa-data; r-next = s; r = s; pa = pa-next; void main() LinkList LA,LB; InitList_L(LA); ListInsert(LA,1,A); ListInsert(LA,2,B); ListInsert(LA,3,C); L

17、istInsert(LA,4,D); ListInsert(LA,5,D); ListInsert(LA,6,F); ListInsert(LA,7,B); ListInsert(LA,8,H); Disp_L(LA); InitList_L(LB); ListInsert(LB,1,1); ListInsert(LB,2,B); ListInsert(LB,3,D); Disp_L(LB); sample(LA,LB,LC); printf(nsample后:n); Disp_L(LA); Disp_L(LB); Disp_L(LC); getchar();实验内容与步骤:掌握将一个链表拆分

18、成两个链表的算法。将创建的链表La分解成La、Lb两个链表,La链表里的数据为奇数,Lb链表里的数据为偶数,除Lb的头结点之外不开辟新的存储空间并进行显示的操作,代码如下:#include #include typedef int ElemType;typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;/链表的初始化int InitList_L(LinkList &L) L= (LinkList)malloc(sizeof(LNode); L-next=NULL; return 1;/链表插入int Lis

19、tInsert(LinkList &L,int i,ElemType e) LinkList p; p=L; int j=0; while(p&jnext; +j; if(!p|ji-1) return 0; LinkList s=(LinkList)malloc(sizeof(LNode); s-data=e; s-next=p-next; p-next=s; return 1;/链表删除int ListDelete_L(LinkList &L,int i,ElemType &e) LinkList p; p=L; int j=0; while(p-next&jnext; j+; if(!(

20、p-next)|ji-1) return 0; LinkList q=p-next; p-next=q-next; e=q-data; free(q); return 1;/链表显示void Disp_L(LinkList L) LinkList p=L-next; if(!p) printf(此链表为空!); while(p) printf(%d ,p-data); p=p-next; printf(n);/将带头结点的链表LA分解成LA、LB两个链表,/LA为数据域为奇数的结点,LB为数据域为偶数的结点,要求原地工作void sample(LinkList &La, LinkList &L

21、b) LinkList p,q,r; Lb = ( LinkList)malloc( sizeof( LNode); /生成Lb链表新头结点 r = Lb; p = La; while( p-next) q = p-next; if(q-data%2) p = p-next; /La中当前结点为奇数,继续处理下一个结点 else p-next = q-next; r-next=q; r=q; /La中当前结点为偶数,删除,插入Lb链尾 r-next = NULL; void main() LinkList LA,LB; InitList_L(LA); ListInsert(LA,1,3); L

22、istInsert(LA,2,4); ListInsert(LA,3,6); ListInsert(LA,4,7); ListInsert(LA,5,12); ListInsert(LA,6,13); ListInsert(LA,7,15); ListInsert(LA,8,8); Disp_L(LA); sample(LA,LB); printf(nsample后:n); Disp_L(LA); Disp_L(LB);实验内容与步骤:实现链表初始化、插入、删除算法,代码如下:#include #include typedef char ElemType;typedef struct LNod

23、e ElemType data; struct LNode *next;LNode,*LinkList;int InitList_L(LinkList &L) L= (LinkList)malloc(sizeof(LNode); L-next=NULL; return 1;int ListInsert(LinkList &L,int i,ElemType e) LinkList p; p=L; int j=0; while(p&jnext; +j; if(!p|ji-1) return 0; LinkList s=(LinkList)malloc(sizeof(LNode); s-data=e

24、; s-next=p-next; p-next=s; return 1;int ListDelete_L(LinkList &L,int i,ElemType &e) LinkList p; p=L; int j=0; while(p-next&jnext; j+; if(!(p-next)|ji-1) return 0; LinkList q=p-next; p-next=q-next; e=q-data; free(q); return 1;void Disp_L(LinkList L) LinkList p=L-next; if(!p) printf(此链表为空!); while(p)

25、printf(%c,p-data); p=p-next; printf(n);void main() LinkList L; ElemType e; InitList_L(L); Disp_L(L); ListInsert(L,1,A); ListInsert(L,2,B); ListInsert(L,3,C); ListInsert(L,1,X); Disp_L(L); ListDelete_L(L,2,e); printf(删除的元素是:%cn,e); Disp_L(L);实验指导与数据处理:实验结果:此链表为空! XABC删除的元素是:A XBC实验内容与步骤:掌握将一个链表删除得元素插

26、入到另一个链表的算法。要求完成链表的创建,实现将链表中删除的第i个元素起共k个元素插入到另一个链表的第j个元素之前算法,代码如下:#include #include typedef char ElemType;typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;/链表的初始化int InitList_L(LinkList &L) L= (LinkList)malloc(sizeof(LNode); L-next=NULL; return 1;/链表插入int ListInsert(LinkList &L,

27、int i,ElemType e) LinkList p; p=L; int j=0; while(p&jnext; +j; if(!p|ji-1) return 0; LinkList s=(LinkList)malloc(sizeof(LNode); s-data=e; s-next=p-next; p-next=s; return 1;/链表删除int ListDelete_L(LinkList &L,int i,ElemType &e) LinkList p; p=L; int j=0; while(p-next&jnext; j+; if(!(p-next)|ji-1) return 0; LinkList q=p-next; p-next=q-next; e=q-data; free(q); return 1;/链表显示void Disp_L(LinkList L) LinkL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1