數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版-線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版-線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版-線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版-線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版-線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

#include<stdio.h>

#include<mallocoh>

#include(stdlib.h>

/*

數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版線性表的單鏈表存儲(chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)

P28—31

編譯環(huán)境:Dev-C++4o9o9o2

日期:2011年2月10日

*/

typedefintElemType;

//線性表的單鏈表存儲(chǔ)結(jié)構(gòu)

typedefstructLNode

(

ElemTypedata;〃數(shù)據(jù)域

structLNode*next;〃指針域

}LNode,*LinkList;

//typedefstructLNode*LinkList;//另一種定義LinkList的方法

//構(gòu)造一個(gè)空的線性表L

intInitList(LinkList*L)

(

/*

產(chǎn)生頭結(jié)點(diǎn)L,并使L指向此頭結(jié)點(diǎn),頭節(jié)點(diǎn)的數(shù)據(jù)域?yàn)榭眨环艛?shù)據(jù)的。

void*malloc(size_t)

這里對(duì)返回值進(jìn)行強(qiáng)制類型轉(zhuǎn)換了,返回值是指向空類型的指針類型.

*/

(*L)=(LinkList)malloc(sizeof(structLNode));

if(!(*L))

exit(0);//存儲(chǔ)分配失敗

(*L)->next=NULL;//指針域?yàn)榭?/p>

return1;

)

//銷毀線性表L,將包括頭結(jié)點(diǎn)在內(nèi)的所有元素釋放其存儲(chǔ)空間。

intDestroyList(LinkList*L)

(

LinkListq;

//由于單鏈表的每一個(gè)元素是單獨(dú)分配的,所以要一個(gè)一個(gè)的進(jìn)行釋放

while(*L)

(

q=(*L)—〉next;

free(夫L);〃釋放

*L=q;

return1;

}

將L重置為空表,即將鏈表中除頭結(jié)點(diǎn)外的所有元素釋放其存

儲(chǔ)空間,但是將頭結(jié)點(diǎn)指針域置空,這和銷毀有區(qū)別哦。不改變L,所以

不需要用指針。

*/

intClearList(LinkListL)

(

LinkListp,q;

p=L—>next;〃p指向第一個(gè)結(jié)點(diǎn)

while(p)//沒(méi)到表尾則繼續(xù)循環(huán)

(

q=p->next;

free(p);〃釋放空間

P二q;

)

L—>next=NULL;//頭結(jié)點(diǎn)指針域?yàn)榭眨湵沓闪艘粋€(gè)空表

return1;

)

//若L為空表(根據(jù)頭結(jié)點(diǎn)L-〉next來(lái)判斷,為空則是空表),則返回1,

//否則返回0.

intListEmpty(LinkListL)

(

if(L—>next)〃非空

return0;

else

return1;

)

//返回L中數(shù)據(jù)元素個(gè)數(shù)。

intListLength(LinkListL)

(

inti=0;

LinkListp=L一〉next;〃p指向第一個(gè)結(jié)點(diǎn)

while(p)//沒(méi)到表尾,則繼續(xù)循環(huán)

(

i++;

p=p->next;

)

returni;

)

//算法2o8P29

〃L為帶頭結(jié)點(diǎn)的單鏈表的頭指針。當(dāng)?shù)趇個(gè)元素存在時(shí),其值賦給e并

//返回1,否則返回0o

intGetElem(LinkListL,inti,ElemType*e)

intj=1;〃j為計(jì)數(shù)器

LinkListp=L一〉next;//p指向第一個(gè)結(jié)點(diǎn)

while(p&&j<i)//順指針向后查找,直到p指向第i個(gè)元素或p為空

{

p=p—>next;

j++;

)

if(!plIj)i)//第i個(gè)元素不存在

return0;

*e=p—)data;//取第i個(gè)元素

return1;

}

//返回L中第1個(gè)與e滿足關(guān)系compare()的數(shù)據(jù)元素的位序。

//若這樣的數(shù)據(jù)元素不存在,則返回值為0

intLocateElem(LinkListL,ElemTypee,int(compare)(ElemType,ElemType))

(

inti=0;

LinkListp=L——>next;

while(p)〃將鏈表的每一個(gè)元素進(jìn)行對(duì)比

(

i++;

if(compare(p一〉data,e))//找到這樣的數(shù)據(jù)元素

returni;

p=p->next;

)

return0;

)

//若cuje是L的數(shù)據(jù)元素,且不是第一個(gè),則用pre_e返回它的前驅(qū),

〃返回1;否則操作失敗,pre_e無(wú)定義,返回

intPriorElem(LinkListL,ElemTypecur_e,ElemType*pre_e)

(

LinkListq,

p=L—)next;〃p指向第一個(gè)結(jié)點(diǎn)

while(p->next)〃p所指結(jié)點(diǎn)有后繼

(

q=p—〉next;〃q為p的后繼

if(q->data==cur_e)

(

*pre_e=p—>data;

return1;

}

p=q;//p向后移

)

return-1;

)

〃若cur_e是L的數(shù)據(jù)元素,且不是最后一個(gè),則用next_e返回它的后繼,

〃返回1;否則操作失敗,next_e無(wú)定義,返回-1

intNextElem(LinkListL,ElemTypecur_e,ElemType*next_e)

(

LinkListp=L一〉next;//p指向第一個(gè)結(jié)點(diǎn)

while(p->next)〃p所指結(jié)點(diǎn)有后繼

(

if(p—>data==cur_e)

{

*next_e=p-〉next-)data;

return1;

)

p=p->next;

)

return—1;

)

//算法2.9P30

//在帶頭結(jié)點(diǎn)的單鏈線性表L中第i個(gè)位置之前插入元素e

intListInsert(LinkLisl*L,inii,ElemTypee)

(

intj=0;

LinkListp=*L,s;

while(p&&j<i-l)//尋找第i—l個(gè)結(jié)點(diǎn)

(

p=p->next;

j++;

}

if(!p||j)i-D〃i小于1或者大于表長(zhǎng)

return0;

s=(LinkList)malloc(sizeof(structLNode));//生成新結(jié)點(diǎn)

s->data=e;//插入L中

s—>next=p->next;

p-〉next=s;

return1;

)

//算法2。10P30

//在帶頭結(jié)點(diǎn)的單鏈線性表L中,刪除第i個(gè)元素,并由e返回其值

intListDelete(LinkListinti,ElemType*e)

(

intj=O;

LinkListp=*L,q;

while(p-)next&&j<i-l)//尋找第i個(gè)結(jié)點(diǎn),并令p指向其前趨

p=p-)next;

j++;

)

if(!p一〉next|Ij>i-1)//刪除位置不合理

return0;

q=p—〉next;//刪除并釋放結(jié)點(diǎn)

p—〉next=q->next;

*e=q—〉data;

free(q);

return1;

)

//依次對(duì)L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)vi()

intListTraverse(LinkListL,void(*vi)(ElemType))

(

LinkListp=L->next;

〃對(duì)所有元素調(diào)用函數(shù)vi

while(p)

(

vi(p—〉data);

p=p->next;

)

printf

return1:

}

//在按非降序排列的線性表L中按非降序插入新的數(shù)據(jù)元素e

voidInsertAscend(LinkListL,ElemTypee)

(

LinkListq=L,

p=L—〉next;

while(p&&e>p—〉data)

(

q=p;

p=p-)next;

)

q->next=(LinkList)malloc(sizeof(structLNode));//eqJo

q—〉next—〉data=e;

q->next—〉next=p;

)

//按非升序排列的線性表L中按非升序插入新的數(shù)據(jù)元素e

voidInsertDescend(LinkListL,ElemTypee)

(

LinkListq=L,p=L-〉next;

while(p&&e<p—>data)

q二p;

p=p-〉next;

)

q一〉next=(LinkList)malloc(sizeof(structLNode));//e插在q后

q一〉next—>data=e;

q—>next->next=p;

)

//L的頭部插入新的數(shù)據(jù)元素e,作為鏈表的第一個(gè)元素

intHeadInsert(LinkListL,ElemTypee)

(

LinkLists;

s=(LinkList)malloc(sizeof(structLNode));//生成新結(jié)點(diǎn)

s—>data=e;//給結(jié)點(diǎn)賦值

s-)next=L一>next;//插在表頭

L-)next=s;

return1;

)

〃在L的尾部插入新的數(shù)據(jù)元素e,作為鏈表的最后一個(gè)元素

intEndInsert(LinkListL,ElemTypee)

(

LinkListp=L;

while(p->next)〃使p指向表尾元素

p=p—〉next;

p一〉next=(LinkList)malloc(sizeof(structLNode));//在表尾生成新結(jié)點(diǎn)

p—>next—〉data=e;//給新結(jié)點(diǎn)賦值

p一〉next-)next=NULL;//表尾

return1;

}

〃刪除L的第一個(gè)數(shù)據(jù)元素,并由e返回其值

intDeleteFirst(LinkListL,ElemType*e)

(

LinkListp=L—〉next;

if(p)

{

*e=p—>data;

L->next=p-〉next;

free(p);

return1;

)

else

return0;

}

〃刪除L的最后一個(gè)數(shù)據(jù)元素,并用e返回其值

intDeleteTail(LinkListL,ElemType*e)

LinkListp=L,q;

if(!p—>next)//鏈表為空

return0;

while(p—〉next)

(

q=p;

p=p—>next;

)

q—〉next=NULL;//新尾結(jié)點(diǎn)的next域設(shè)為NULL

*e=p—〉data;

free(p);

return1;

}

//刪除表中值為e的元素,并返回1;如無(wú)此元素,則返回0

intDeleteElem(LinkListL,ElemTypee)

(

LinkListp=L,q;

while(p)

(

q=p-〉next;

if(q&&q—〉data==e)

{

p-)next=q—>next;

free(q);

return1;

)

p=q;

)

return0;

)

//用e取代表L中第i個(gè)元素的值

intReplaceElem(LinkListL,inti,ElemTypee)

(

LinkListp=L;

intj=0;

〃找到第i個(gè)元素的位置給p

while(p-)next&&j<i)

(

j++;

p=p-〉next;

)

if(j==i)

p—〉data=e;

return1;

)

else//表中不存在第i個(gè)元素

return0;

)

//按非降序建立n個(gè)元素的線性表

intCreatAscend(LinkList*L,intn)

(

intj;

LinkListp,q,s;

if(n(=0)

return0;

InitList(L);

printf("請(qǐng)輸入%d個(gè)元素:(空格)\n",n);

s=(LinkList)malloc(sizeof(structLNode));//第一個(gè)結(jié)點(diǎn)

scanf("%d”,&s—>data);

s—〉next=NULL;

(*L)—〉next=s;

for(j=l;j<n;j++)

(

s=(LinkList)malloc(sizeof(structLNode));//其余結(jié)點(diǎn)

scanf(''%cT,&s—〉data);

q=*L;

p=(*L)—〉next;

while(p&&p-)data<s~~>data)〃p沒(méi)到表尾,且所指元素值小于新值

(

q二p;

p=p—〉next;//指針后移

}

s->next=q—)next;//元素插在q的后面

q—〉next=s;

)

return1;

)

//按非升序建立n個(gè)元素的線性表

intCreatDescend(LinkList*L,intn)

(

intj;

LinkListp,q,s;

if(n<=0)

return0;

InitList(L);

printf("請(qǐng)輸入%d個(gè)元素:(空格)\n",n);

s=(LinkList)malloc(sizeof(structLNode));//第一個(gè)結(jié)點(diǎn)

scanf("%d”,&s-〉data);

s—〉next=NULL;

(*L)一>next=s;

for(j=l;j<n;j++)

(

s=(LinkList)malloc(sizeof(structLNode));//其余結(jié)點(diǎn)

scanf("%d”,&s-〉data);

q=*L;

p=(*L)—〉next;

while(p&&p—〉data)s—>data)〃p沒(méi)到表尾,且所指元素值大于新值

(

q=p;

p=p->next;//指針后移

)

s-〉next=q一〉next;//元素插在q的后面

q->next=s;

}

return1;

)

//返回表頭元素的值

intGetFirstElem(LinkListL,ElemType*e)

(

LinkListp=L->next;〃第一個(gè)結(jié)點(diǎn)給p

if(!p)〃空表

return0;

else//非空表

*e=p-〉data;

return1;

)

//算法2.11P30

//逆位序(插在表頭)輸入n個(gè)元素的值,建立帶表頭結(jié)構(gòu)的單鏈線性表L

voidCreateList(LinkList*L,intn)

(

inti;

LinkListp;

//先建立一個(gè)帶頭結(jié)點(diǎn)的空單鏈表,相當(dāng)于初始化單鏈表

*L=(LinkList)malloc(sizeof(structLNode));

(*L)—〉next=NULL;

printf("請(qǐng)輸入%d個(gè)數(shù)據(jù)\n",n);

for(i=n;i>0;------i)

(

p=(LinkList)malloc(sizeof(structLNode));//生成新結(jié)點(diǎn)

scanf("%d,\&p一〉data);//輸入元素值

p—>next=(*L)—>next;//插入到表頭

(*L)->next=p;

)

)

//正位序(插在表尾)輸入n個(gè)元素的值,建立帶表頭結(jié)構(gòu)的單鏈線性表

voidCreateList2(LinkList*L,intn)

(

inti;

LinkListp,q;

//先建立一個(gè)帶頭結(jié)點(diǎn)的空單鏈表,相當(dāng)于初始化單鏈表

*L=(LinkList)malloc(sizeof(structLNode));//生成頭結(jié)點(diǎn)

(*L)—>next=NULL;

q=*L;

printf("請(qǐng)輸入%d個(gè)數(shù)據(jù)\n",n);

for(i=l;i<=n;i++)

(

p=(LinkList)malloc(sizeof(structLNode));

scanf("%d”,&p—〉data);

q—>next=p;

q=q—〉next;

)

p—〉next=NULL;

)

/*

用單鏈表重寫算法2。2供參考

已知線性表La和Lb中的數(shù)據(jù)元素按值非遞減排列.

歸并La和Lb得到新的線性表Lc,Lc的數(shù)據(jù)元素也按值非遞減排列

voidMergeList(LinkListLa,LinkListLb,LinkList*Lc)

(

inti=l,j=l,k=O;

intLa_len,Lb」en;

ElemTypeai,bj;

InitList(Lc);

La_len=ListLength(La);

Lb_len=ListLength(Lb);

while(i(=La_len&&j<=Lb_len)//表La和表Lb均非空

(

GetElem(La,i,&ai);

GetElem(Lb,j,&bj);

if(ai<=bj)

(

Listinsert(Lc,++k,ai);

++i;

else

ListInsert(Lc,++k,bj);

++j;

)

)

while(i<=La_len)II表La非空且表Lb空

(

GetElem(La,i++,&ai);

Listinsert(Lc,++k,ai);

)

while(j<=Lb_len)//表Lb非空且表La空

(

GetElem(Lb,j++,&bj);

Listinsert(Lc,++k,bj);

}

)

*/

//算法2.12P31

//已知單鏈線性表La和Lb的元素按值非遞減排列。

//歸并La和Lb得到新的單鏈線性表Lc,Lc的元素也按值非遞減排列

voidMergeList(LinkListLa,LinkList*Lb,LinkList*Lc)

(

LinkListpa=La—〉next,pb=(*Lb)->next,pc;

*Lc=pc=La;〃用La的頭結(jié)點(diǎn)作為L(zhǎng)c的頭結(jié)點(diǎn)

while(pa&&pb)

(

if(pa—〉data(=pb—〉data)

(

pc—〉next=pa;

*Lc=pa;

pa=pa—〉next;

)

else

(

pc—〉next=pb;

pc=pb;

pb=pb-〉next;

)

}

pc->next=pa?pa:pb;//插入剩余段

free"Lb);//釋放Lb的頭結(jié)點(diǎn)

Lb=NULL;

//判斷是否相等的函數(shù),Union()用到

intequal(ElemTypec1,ElemTypec2)

(

if(cl==c2)

return1;

else

return0;

}

//算法2.1

//將所有在線性表Lb中但不在La中的數(shù)據(jù)元素插入到La中

voidUnion(LinkListLa,LinkListLb)

(

ElemTypee;

intLa_len,Lb_len;

inti;

La_len=ListLength(La);//求線性表的長(zhǎng)度

Lb_len=ListLength(Lb);

for(i=l;i<=Lb_len;i++)

(

GetElem(Lb,i,&e);//取Lb中第i個(gè)數(shù)據(jù)元素賦給e

if(!LocateElem(La,e,equal))//La中不存在和。相同的元素,則插入之

Listinsert(&La,++La_len,e);

)

}

//數(shù)據(jù)元素判定函數(shù)(相等為1,否則為0)

intcomp(ElemTypecl,ElemTypec2)

{

if(cl==c2)

return1;

else

return0;

}

voidvisit(ElemTypec)

(

printf("%d”,c);

)

intmain()

(

LinkListL,La,Lb,Lc;

ElemTypee,eO,d;

inti,j,n,k;

〃初始化一個(gè)單鏈表

i=InitList(&L);

〃通過(guò)插入操作創(chuàng)建一個(gè)單鏈表

for(j=l;j<=5;j++)

i=ListInsert(&L,l,j);

〃調(diào)用visit函數(shù),對(duì)單鏈表進(jìn)行遍歷

printf("在L的表頭依次插入1?5后:L=");

ListTraverse(L,visit);//依次對(duì)元素調(diào)用visit(),輸出元素的值

〃判斷單鏈表是否為空

i=ListEmpty(L);

printf("L是否空:i=%d(l:是0:否)\n",i);

//清空單鏈表

i=ClearList(L);

printf("清空L后:L=");

ListTraverse(L,visit);

〃判斷單鏈表是否為空

i=ListEmpty(L);

printf("L是否空:i=%d(1:是0:否)\n”,i);

〃再次通過(guò)插入操作創(chuàng)建一個(gè)單鏈表

for(j=l;j<=10;j++)

Listinsert(&L,j,j);

printf(w在L的表尾依次插入1?10后:L=");

ListTraverse(L,visit);

〃取得單鏈表的第5個(gè)元素

GetElem(L,5,&e);

printf("第5個(gè)元素的值為:%d\n",e);

〃在單鏈表中找到和j滿足comp函數(shù)關(guān)系的元素

for(j=O;j(=1;j++)

(

k=LocateElem(L,j,comp);

if(k)

printf("第%(1個(gè)元素的值為%d\n",k,j);

else

printf("沒(méi)有值為%<1的元素\n”,j);

)

〃找到某個(gè)元素的前驅(qū)

for(j=l;j<=2;j++)〃測(cè)試頭兩個(gè)數(shù)據(jù)

(

GetElem(L,j,&e0);//把第j個(gè)數(shù)據(jù)賦給eO

i=PriorElem(L,e0,&e);//求eO的前驅(qū)

if(i==-1)

printf("元素%d無(wú)前驅(qū)\n”,eO);

else

printf("元素%€1的前驅(qū)為:%d\n",e0,e);

}

〃找到某個(gè)元素的后繼

for(j=ListLength(L)-1;j<=ListLength(L);j++)//測(cè)試最后兩個(gè)數(shù)據(jù)

GetElem(L,j,&eO);〃把第j個(gè)數(shù)據(jù)賦給eO

i=NextElem(L,eO,&e);//求eO的后繼

if(i==—1)

printf("元素%d無(wú)后繼\n",eO);

else

printf("元素%d的后繼為:%d\n”,eO,e);

}

〃求單鏈表的表長(zhǎng)

k=ListLength(L);〃k為表長(zhǎng)

〃刪除操作

for(j=k+l;j>=k;j—)

(

i=ListDelete(&L,j,&e);〃刪除第j個(gè)數(shù)據(jù)

if(i==0)

printf("刪除第%d個(gè)數(shù)據(jù)失敗\n”,j);

else

printf("刪除的元素為:%d\n",e);

}

printf("依次輸出L的元素:“);

ListTraverse(L,visit);

〃銷毀單鏈表

DestroyList(&L);

printf("銷毀L后:L=%u\n\n",L);

printf(w按非降序建立n個(gè)元素的線性表L,請(qǐng)輸入元素個(gè)數(shù)n:");

scanf&n);

CreatAscend(&L,n);

printf("依次輸出L的元素:”);

ListTraverse(L,visit);

//按非降序插入元素10

InsertAscend(L,l0);

printf("按非降序插入元素10后,線性表L為:");

ListTraverse(L,visit);

〃在L的頭部插入12

HeadInsert(L>12);

〃在L的尾部插入9

Endinsert(L,9);

printf("在L的頭部插入12,尾部插入9后,線性表L為:");

ListTraverse(L,visit);

i=GetFirstElem(L,&e);

printf("第1個(gè)元素是:%d\n",e);

prinlf("請(qǐng)輸入要?jiǎng)h除的元素的值:”);

scanf("%d'',&e);

i=DeleteElem(L,e);

if(i)

printf("成功刪除%d!\n",e);

else

printf("不存在元素%d!\n”,e);

printfC線性表L為:”);

ListTraverse(L,visit);

printf("請(qǐng)輸入要取代的元素的序號(hào)元素的新值:”);

scanfT%d%d”,&n,&e);

ReplaceElem(L,n,e);

printf("線性表L為:“);

ListTraverse(L,visit);

DestroyList(&L);

printf("銷毀L后,按非升序重新建立n個(gè)元素的線性表L,請(qǐng)輸入”

”元素個(gè)數(shù)n(〉2):(');

scanf("%d”,&n);

CreatDescend(&L,n);

printf("依次輸出L的元素:");

ListTraverse(L,visit);

//按非升序插入元素10

InsertDescend(L,10);

printf("按非升序插入元素10后,線性表L為:”);

ListTraverse(L,visit);

printf("請(qǐng)輸入要?jiǎng)h除的元素的值:”);

scanff'%d",&e);

i=DeleteElem(L,e);

if(i)

printf("成功刪除%(1!\n",e);

else

printf("不存在元素%d!\n”,e);

printfC線性表L為:");

ListTraverse(L,visit);

DeleteFirst(L,&e);

DeleteTail(L,&d);

printf("刪除表頭元素%d和表尾元素%d后,線性表L為:",e,d);

ListTraverse(L,visit);

,,,,

printf(\n);

//測(cè)試算法2.11

n=3;

CreateList2(&La,n);//正位序輸入n個(gè)元素的值

printf("正位創(chuàng)建后La=");//輸出鏈表La的內(nèi)容

ListTraverse(La,visit);

CreateList(&Lb,n);〃逆位序輸入n個(gè)元素的值

printf("逆位創(chuàng)建后Lb*;//輸出鏈表Lb的內(nèi)容

ListTraverse(Lb,visit);

DestroyList(&La);

DestroyList(&Lb);

//測(cè)試算法2。12

//初始化一個(gè)單鏈表La

i=InitList(&La);

〃通過(guò)插入操作創(chuàng)建一個(gè)單鏈表

for(j=2;j(=10;j+=2)

i=ListInsert(&La,1,j);

printf("La=M);//輸出鏈表La的內(nèi)容

ListTraverse(La,visit);

〃初始化一個(gè)單鏈表

i=InitList(&Lb);

〃通過(guò)插入操作創(chuàng)建一個(gè)單鏈表

for(j=l;j<=10;j+=2)

i=ListInsert(&Lb,l,j);

printf("Lb=");〃輸出鏈表Lb的內(nèi)容

ListTraverse(Lb,visit);

〃按非遞減順序歸并La和Lb,得到新表Lc

MergeList(La,&Lb,&Lc);

printf("合并La和Lb后,Lc=M);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論