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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构常用算法实现print.docx

1、数据结构常用算法实现print线性表的顺序表示程序2_.提供了顺序存储结构下线性表的实现。第1行定义了一个常数值AXSIZE.它是一个常数,表示线性表的最大长度。第2行把LEMTYPE设置为t的一个别名.这样,这个例子就可以使用一组整数了.第3行到第7行包含了线性表的说明。接下来从第8行到第46行线性表运算函数的定义.第8到第11行将线性表置成空表,只需简单地将线性表元素个数置成即可。由于线性表的长度已经记录在结构成员length中,因此求线性表的长度(第35行到第3行)只是返回length的值.第2到第2行是追加函数,函数apend在线性表的表尾插入一个元素.第1行到第9行是插入函数。在表中

2、第i位置插入一个新元素te时,需将i,1,n1位置上的元素向后移,变成编号为i+1,i+2,,n,然后将tem插入到第i个位置,且线性表的长度加1。第25行到第4行是删除元素。要删去表中位置i上的元素,同样需要移动表中元素,使原编号为i1,i+,,n1的元素变成编号为,i+1,,n-,并将表的长度减1。第39行到第4行的函数fid在线性表中查找第一个出现的值为item的元素。如果值ite找到了,函数返回元素item所在位置1,否则返回1.第54行到第行是main函数的一个例子,说明了线性表的使用。57行调用lear 函数将线性表清空,第58,9,60三行调用apped函数追加三个元素,第62行

3、在位置插入一个元素15,第65行调用elet函数删除位置3的元素。第4行到53行的print函数是为了显示线性表中的数据而设置的。程序2_1c1 ineMAXSZE 9992tydf n ELMTYPE;3 trut li4LEMTPlstarayMAXIZE;5 ntlnth;6;src ls l;8 vidcer()9 10enth =0;11 12void inst(nt os,ELETPEitem) 14int i;1for(i =l.length;pos;i)16 l.listrayi =l.litarrayi;1 。istrrap =tem;18 l.lgth;190void ap

4、e(EEMTYE item)22 l。litaralngth+ item;2 2LEMTYdete(in o)2627 in ;2 EEYPEtemp;29 tep =l。lstrayos;30fo(i pos;i。ng-1;i+)1 l。saryi = 。istarra+1;2 l.lngt-; ret temp;5nt length()7rern l.leth; 3 i id(ELMTY itm)0 it i; fo (=0;ielement = te;27 = d;8 1;29 ile (p!=NU) & (jpos) 3 p = pnxt;31 j+;32 i(!)|(jp) retn

5、 0;4 s-et = p-et;35 p-nxt = s;6if (til = p) ail s;37 etu1;38 9 ELEMPE deet(int pos)041 trct list p,;4 ELEMYPtep;43 intj;44 p; = heanext;5j = 1;6 hile (p!=NUL) & (jp))47 q p; p = pnt;48 j+;4 50if((!p)|(jpos)51 return052 qxt next;53 tm = element;54 i (l = p) ta = q;5r();5 retunemp;7 58 it lengh()5960

6、stuctlist ;61 intcnt0;2 or(p head-nt;p !=NL; p-nex)63 cnt+;6reur cnt;65 6intfind(LEMTY ite)67 6 truc lst p = headnext;69 while (!=ULL) 7 if (-eement = item)71 rtu 1;2 else3 p = p-nex;7475 retn ;76 77vid pnt()787 struct ls*;8 ntf(”n);8 fr (p= ead-nxt;!ULL;pp-ne)82 print(”d,peemet);8384 voidin()8 86 c

7、lrsc();87 it();88 ape(10); /* lit (0) */9 append(0); st i (1,0) */90 apd(30); * ist i(1,20,30)91pp(0); / st is(10,20,0,40) /92 insert(3,3);/ listis (10,0,3,40) /93 rint();4print(nd,elte(4); /* listis (10,20,30,35) *95prin();96 栈程序_3.是栈数据结构的实现,第3行到第6行包含栈类型的说明, p被定义为表示栈中最上面那个元素的位置.push(第13行到第17行)和pop(

8、第18行到第行)只是从tp指示的数组中的位置插入和删去一个元素,因为op表示栈顶元素的位置,所以push首先把一个值插入到栈顶位置,然后把top加1。同样,首先把tp减1,然后删去栈顶元素。 函数toVlue(第23行到7行)只是将栈顶元素返回。如果栈中没有元素,函数sEmpy(第28行到第31行)返回1,否则返回0。程序2_3.cinclde#efineAXSZE 100tpde int ELEMTYP;struc stack LEMYPE ltarayMAXSIE;in to;;structs ;vid int() sop = 0;void ph(ELEMTYPE itm) assert(

9、s。topMXSIZ); s.litaays。top+= im;EMTPE op()int isEmpy(); asert(!Ept(); return s.lstarray-s.top;ELEMTYPEpVue() n ismpty(); sse(!ismpty(); retun.listarra。top1;it isEmp() reurn s. = 0;vi mai() init(); push(10); / is (10)/puh(20); s s(20,10) */ prntf(%d,topVale(); /rturn tp eement20*/ intf(n); prit(d,pop

10、();/ sis (10)*/程序2_c给出了链式栈表示和各种运算的算法。其中to是指向链式栈第一个结点(栈顶)的指针。进栈操作(第13行到第21行)首先申请一个新结点,并初始化该结点,然后修改新产生的结点的ne域指向栈顶,并设置to指向新的链表结点。第22行到第3行是出栈操作.变量emp用来存储栈顶结点的值,tmp用于在删去栈顶结点时保持与栈的链接,它指向当前栈顶链接到的结点。此时把原来的栈顶结点释放回内存,恢复to等于lep.也就是指向原来栈顶链接的结点,原来栈顶的值emp作为op函数的返回值.程序2_4.c nclue lde assethtypedefin ELEMTPE;strt n

11、ode EEMTPE le; stuctnde nex;;truc nd ; voi ini() top ULL;vi push(ELEMTYP item) stuct nod *p; (p=(truct node )maloc(sizef(sruct nod)!=NULL) plem =ie; pnext t;op = p; ELETYPE pop()nsEmpty();LMYEtmp; suct nd lemp; asert(!isEpy()); temp topeem;ltemp = tpt;free(to);tp = tep; rturn ep; ELEMPE toVlue() int

12、 isEmty(); set(!ip()); return topelm;it isEmpt() eturn top = NLL; od ain() int(); ush(1); / sis (10)*/ push(20); /* ss(,1) *push(0); / is (3,20,1) rif(%dn,toue()); printf(%dn”,op()); /* s is (20,1)/队列在程序2_.c中,q表示循环队列(第3行到第9行),其队头与队尾指示变量分别为font和rear。队列中的元素类型为in(第3行).函数enueue(第4行到第19行)执行队列的插入操作,参数item

13、是插入队列的元素.当队列不满时,nqueue首先移动队尾指针,然后将item置入rear所指位置。函数dqueue(第20行到行)执行队列的删除操作,返回从队列中取出的元素。函数fistle(第26行到第30行)返回队列头元素。程序2_5.ccde asserthicludestdiohefie MAXSZE 0type i ELMTYPE;tuct queue n front;a;LMYPE elemMAXSIZ;sructqueueq;voi nit() rot= qrear = 0;voiqueue(ELEMTPE im) assr((qear+1)% MAXSIE)!= q.front

14、); qrear = (q。rear +1) MASIZE; incremt rear / q。lemq.r im; LEMTP dequeu() / dequeue leent rofof qeue / nt ismpty(); sset(!isEpty());/thermut be omethigdeqee* qrot= (q。front 1) MAXSI; /* incemnrt / tur q.elemq。front; /* rtuvaue */ ELMTYE firstValue() / get valueof frolemen / int Empty(); ssert(!iEmty

15、(); return qelm(q.frnt+1) MAXSZE; intismpy()/* TRUEs queue isemty */ returnq.front= .ar; voidmain() int();equue(0); /* is (10)/ enqueue(20); /* q i (10,20)*/nque(0); / q is(10,30)*/ prnf(%d”,firstlue();* ll display10/ri(n”,dequee()); /will sp 10 *程序6c给出了链式队列的说明和函数的实现。font和ra分别是指向队首和队尾元素的指针.链式队列的实现不需

16、要表头结点,当队列为空时,指针ron和rea的值均为空(LL)。当在队列中插入一个结点时(第14行到27行),新结点链入rear所指结点的next域,并使rear指向新的结点。如果在插入之前队列为空,则指针frot指向新插入的结点。当从队列中删除一个结点时(第8行到3行),要把font所指结点的net域的值赋给fnt,并且释放这个结点。如果删除之后队列为空,则置指针rear为空(ULL)。程序_6。c#includemalc。hincldsto。h incle nxt=(suctode*)mllc(sieof(srctnod); rearxelem ite; rernextnx= L; rar

17、= rernet; else ft=ear=(struc de*)mlc(sizef(sut ode)); rotele = ie; fron-nex NU; ELETPE dequeue()ntsEmpt(); EMTYE temp= rot-lem; rutnode *ltmp = fron; assert(!iEmty(); fron = frntnet;fre(ltep); if(ront=NUL) ear = NUL; tun em; LEMYPE firsaue() int iEmpty();assert(!isEmpty(); rtu frn-elem; int smpty()

18、reurn frot = NUL; oidmai() t(); nqueu(10);enqueue(20); enqueue(30); pr(”n”,irstVale(); pntf(%dn,equeue(); 稀疏矩阵程序31.c是按照快速转置算法求矩阵的转置。程序第2行给出稀疏矩阵的三元组表表示.函数FastTranpos按照快速转置算法思想将稀疏矩阵a转置为稀疏矩阵b,b也表示为三元组表形式。第11行到第13行计算矩阵a的每一列的非零元素个数。第15行计算a中每一列第一个非零元素在中的起始位置.第16行第22行对a中的元素依此进行转置。程序1。c1 #define MAXCL 002it a3 7,6,8,0,0,5,0,3,2,0,5,8,,6, 1,2,9,2,3,3,,,9,

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

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