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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构复习.docx

1、数据结构复习数据结构复习第一章 绪论1. 数据结构:研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。2. 数据 信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。如:整数、实数、字符串、图像、声音等3. 数据元素数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。如:整数“5”,字符“N”等4. 数据记录(Data Record) 数据元素被组织成结构。一个数据记录可由若干个数据项组成,数据项是数据的不可分割的最小单位。5. 数据对象(Data Object)是性质相同的数据元素的集合。是数据的一个子集 例:集

2、合N=0,1,-1,2,-2,是整型数据对象、C=A,B,C, Z是字符型数据对象数据类型(Data Type)是一个值的集合和定义在这个值集上的一组操作的总称 例:原子类型有:整型、实型、字符型、布尔型、枚举类型、子界类型、指针类型结构类型有:数组、记录、文件。6. 数据结构 有一个特性相同的数据元素的集合,如果在数据元素之间存在一种或多种特定的关系,则称为一个数据结构。7. 数据结构的类型集合结构线性结构树形结构图型结构8. 数据结构包括逻辑结构 和物理结构两方面 逻辑结构 是对数据元素之间的逻辑关系的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示,如:图形表示、二元组表示

3、、语言描述; 物理结构 是逻辑结构在计算机中的表示和实现,故又称“存储结构” 9. 数据元素的映象方法a) 用二进制位(bit)的位串表示数据元素10. 关系的映象方法:a) 顺序映象以物理位置的相邻反映逻辑上的相邻b) 链式映象以附加信息(指针)表示后继关系需要用一个和 x 在一起的附加信息指示 y 的存储位置 11. 算法为了解决某类问题而规定的一个有限长的操作序列。五个重要特性:有穷性、确定性 、可行性、有输入 、有输出算法设计的原则:1正确性2. 可读性3健壮性4高效率与低存储量需求第二章 线性表顺序表操作:#define OK 1#define ERROR 0#include #in

4、cludetypedef int status;#define MAXSIZE 100typedef struct int dataMAXSIZE;int length;sqlist;status InitList(sqlist &sl) sl.length = 0; return OK;status CreatList(sqlist &sl) printf(开a始?创建顺3序表,?请?输?入?表长(正y整?数y)?:o); int n = 0; scanf(%d,&n); while(n100) printf(超?出?最?大长度限T制?,?请?重?新?输?入?:o); scanf(%d,n)

5、; sl.length = n; printf(请?输?入?数y据Y:o); for(int i=0;in;i+) scanf(%d,&sl.datai); return OK;/按顺3序查找status FindPosElem(sqlist sl,int pos) if(possl.length) return ERROR; return sl.datapos-1;/按值查找status FindElem(sqlist sl, int elem) int i; for(i=0;i=sl.length) return ERROR;/在指?定位?置?之?前插?入?status InsertLis

6、t(sqlist &sl ,int elem,int pos) if(possl.length+1|sl.length+1MAXSIZE) return ERROR; else for(int i=sl.length+1;ipos-1;i-) sl.datai=sl.datai-1; sl.datapos-1 = elem; sl.length+; return OK;/按序号?删?除ystatus DelePosElem(sqlist &sl,int pos,int *elem) if(possl.length) return ERROR; *elem = sl.datapos-1; if(

7、pos=sl.length) sl.length -; return OK; else for(int i=pos-1;isl.length-1;i+) sl.datai=sl.datai+1; sl.length-; return OK;/按值删?除yvoid DeleElem(sqlist &sl, int s, int &elem) for(int i=0;isl.length;i+) if(sl.datai=s) DelePosElem(sl,i+1,&elem); i=i-1; status MergeList(sqlist La, sqlist Lb, sqlist &Lc) in

8、t i ,j; i = j=1; int k =0; while(i=La.length&j=Lb.length) if(La.datai-1=Lb.dataj-1) InsertList(Lc,La.datai-1,+k); i+; else InsertList(Lc,Lb.dataj-1,+k);j+; while(i=La.length) InsertList(Lc,La.datai-1,+k); i+; while(j=Lb.length) InsertList(Lc,Lb.dataj-1,+k); j+; return OK;/输?出?status OutList(sqlist s

9、l) for(int i=0;isl.length;i+) printf(%d ,sl.datai); return OK;void main() sqlist sl; sqlist la,lb,lc; int pos =0; int elem = 0; int elem1 = 0; int s = 0; printf(*顺3序表的?实现?*n); printf(1-初?始?化n2-创建表n3-按序号?查找n4-按值查找n5-插?入?n6-按序号?删?除yn7-按值删?除yn8-输?出?n9-合?并n); int n=1; while(n) printf(请?输?入?操作序号?:o); sca

10、nf(%d,&n); switch(n) case 1: if(InitList(sl) printf(初?始?化成功|!?); else printf(初?始?化失败!?); break; case 2: if(CreatList(sl) printf(创建成功|!?); else printf(创建失败!?); break; case 3: printf(请?输?入?要a查找的?位?置?); scanf(%d,&pos); if(!FindPosElem(sl,pos) printf(输?入?错误!?); else printf(%d,FindPosElem(sl,pos); break;

11、 case 4: printf(请?输?入?要a查找的?值); scanf(%d,&elem); if(!FindElem(sl,elem) printf(没?有D该?数y据Y记?录?!?); else printf(%d,FindElem(sl,elem); break; case 5: printf(请?输?入?要a插?入?的?位?置?:o); scanf(%d,&pos); printf(请?输?入?要a插?入?的?数y:o); scanf(%d,&elem); if(InsertList(sl,elem,pos) printf(插?入?成功|!?); else printf(插?入?失

12、败!?); break; case 6: printf(输?入?要a删?除y数y据Y的?序号?:o); scanf(%d,&pos); if(DelePosElem(sl,pos,&elem) printf(%d已?经-删?除y成功|!?,elem); else printf(ERROR); break; case 7: printf(输?入?要a删?除y的?数y值:o); scanf(%d,&s); DeleElem(sl, s, elem1); printf(%d已?经-删?除y成功|!?,elem1); break; case 8: if(OutList(sl) printf(输?出?完

13、毕?!?); break; case 9: if(CreatList(la) printf(OKn); if(CreatList(lb) printf(Okn); if(InitList(lc) printf(OKn); if(MergeList(la,lb,lc) OutList(lc); break; default: break; 单链表操作:#include#include#define ERROR 0typedef truct Nodeint data;struct LNode *next;LNode,*LinkList;LinkList InitLinkList() LinkLis

14、t s; s = (LinkList)malloc(sizeof(LNode); s-next = NULL; return s;/头插?法创建LinkList CreatLinkList(int n) LinkList L = InitLinkList(); LinkList p; for(int i=0;idata); p-next = L-next; L-next = p; return L;/尾2插?法创建LinkList CreatLinkListTail(int n) LinkList L = InitLinkList(); LinkList p; LinkList q = L;

15、for(int i=0;idata); q-next = p; p-next = NULL; q = p; return L;int Get(LinkList head, int i) LinkList p; p = (LinkList)malloc(sizeof(LNode); p = head-next; int j = 1; while(p&jnext; j+; if(!p|ji) return ERROR; else return p-data; void InsertLinkList(LinkList head,int i,int elem) LinkList p; p = (Lin

16、kList)malloc(sizeof(LNode); p = head-next; int j = 1; while(p&jnext; j+; if(!p|ji-1) printf(ERROR); LinkList s = (LinkList)malloc(sizeof(LNode); s-data = elem; s-next = p-next; p-next = s; printf(OK!);/int DeleteLinkList(LinkList head , int i)/ LinkList p;/ int e = 0;/ p = (LinkList)malloc(sizeof(LN

17、ode);/ p = head-next;/ int j = 1;/ while(p&jnext;/ j+;/ / LinkList q =(LinkList)malloc(sizeof(LNode);/ q = p-next;/ p-next = q-next;/ e = q-data;/ free(q);/ return e;/int Length(LinkList head) int i =0; LinkList p; p = (LinkList)malloc(sizeof(LNode); p = head; while(p) p = p-next; +i; return i;void

18、Merge_L(LinkList La, LinkList Lb,LinkList &Lc) LinkList pa,pb,pc; pa = La-next; pb = Lb-next; Lc = pc = La; while(pa&pb) if(pa-datadata) pc-next = pa; pc = pa; pa = pa-next; else pc-next = pb; pc = pb; pb = pb-next; if(pa) pc-next = pa; else pc-next = pb; free(Lb); void OutPrint(LinkList L) while(L-

19、next) L = L-next; printf(%d ,L-data); void main() printf(*单链表实现?*n); printf(1-头插?法创建n2-尾2插?法创建n3-按序号?查找n4-插?入?n5-删?除yn6-求表长n7-输?出?n8-合?并n); int i =1; int n = 0; int pos = 0; int elem = 0; LinkList L; LinkList la,lb,lc; while(1) scanf(%d,&i); switch(i) case 1: printf(Enter n:n); scanf(%d,&n); L = Cre

20、atLinkList(n); break; case 2: printf(Enter n:n); scanf(%d,&n); L = CreatLinkListTail(n); break; case 3: printf(输?入?序号?:o); scanf(%d,&pos); printf(%dn,Get(L,pos); break; case 4: printf(输?入?位?置?n); scanf(%d,&pos); printf(输?入?数y据Yn); scanf(%d,&elem); InsertLinkList(L,pos,elem); case 5: printf(输?入?位?置?n

21、); scanf(%d,&pos); /printf(%d已?经-删?除y!?,DeleteLinkList(L,pos); case 6: printf(表长:o%d,Length(L); case 7: OutPrint(L); break; case 8: printf(输?入?La的?元a素?个?数y); scanf(%d,&n); la = CreatLinkListTail(n); printf(输?入?Lb的?元a素?个?数y); scanf(%d,&n); lb = CreatLinkListTail(n); lc = InitLinkList(); Merge_L(la,lb

22、,lc); OutPrint(lc); break; 第三章 栈和队列栈的基本操作(链栈):#define MAXLEN 100#define OK 1#define ERROR 0typedef struct StackNode int data; struct StackNode *next;StackNode,*LinkStack;void InitStack(LinkStack &ls) ls = NULL;/判D断?栈?空?int StackEmpty(LinkStack ls) return ls=NULL;/进?栈?(不?带?头结点?头插?法)?void Push(LinkSta

23、ck &ls,int elem) LinkStack p; p=(LinkStack)malloc(sizeof(StackNode); p-data = elem; p-next = ls; ls = p;/出?栈?int Pop(LinkStack &ls)/ LinkStack p;/ int x; if(ls=NULL) return ERROR; else int elem = ls-data; ls = ls-next; return elem; /读栈?顶元a素?int Top(LinkStack ls) if(!StackEmpty) return ls-data; /清?空?void ClearStack(LinkStack &ls) LinkStack cp,np; cp = ls; while(cp!=NULL) np = cp-next; delete cp; cp = np; ls = NULL;数制转换:void conversion(int N,int d)/* 将?整?数yN转a换?成d进?制?*/ LinkStack S; InitStack(S); while(N) Push(S,N%d); N = N/d; int e=0; while(!StackEmpty(S) e=Pop(S); p

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

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