网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机考研408-数据结构算法总结及二叉树三种遍历算法的源码背诵版.pdf

计算机考研408-数据结构算法总结及二叉树三种遍历算法的源码背诵版.pdf

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构算法背诵

一、线性表

1.逆转顺序表中的所有元素

算法思想:第一个元素和最后一个元素对调,第二个元素和倒数第二个元素对调,……,依此类推。

voidReverse(intA[],intn)

{

inti,t;

for(i=0;in/2;i++)

{

t=A[i];

A[i]=A[n-i-1];

A[n-i-1]=t;

}

}

2.删除线性链表中数据域为item的所有结点

算法思想:先从链表的第2个结点开始,从前往后依次判断链表中的所有结点是否满足条件,若某个

结点的数据域为item,则删除该结点。最后再回过头来判断链表中的第1个结点是否满足条件,若

满足则将其删除。

voidPurgeItem(LinkListlist)

{

LinkListp,q=list;

p=list-next;

while(p!=NULL)

{

if(p-data==item){

q-next=p-next;

free(p);

p=q-next;

}else{

q=p;

p=p-next;

}

}

if(list-data==item)

{

q=list;

list=list-next;

free(q);

}

}

3.逆转线性链表

voidReverse(LinkListlist)

{

LinkListp,q,r;

p=list;

q=NULL;

while(p!=NULL)

{

r=q;

q=p;

p=p-next;

q-next=r;

}

list=q;

}

4.复制线性链表(递归)

LinkListCopy(LinkListlista)

{

LinkListlistb;

if(lista==NULL)

returnNULL;

else{

listb=(LinkList)malloc(sizeof(LNode));

listb-data=lista-data;

listb-next=Copy(lista-next);

returnlistb;

}

}

5.将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表

LinkListMergeList(LinkListlista,LinkListlistb)

{

LinkListlistc,p=lista,q=listb,r;

//listc指向lista和listb所指结点中较小者

if(lista-data=listb-data){

listc=lista;

r=lista;

p=lista-next;

}else{

listc=listb;

r=listb;

q=listb-next;

}

while(p!=NULLq!=NULL)

{

if(p-data=q-data){

文档评论(0)

祝秀珍 + 关注
实名认证
内容提供者

好文档 大家想

1亿VIP精品文档

相关文档