![數(shù)據(jù)結(jié)構(gòu) 期末機(jī)考 參考資料_第1頁(yè)](http://file4.renrendoc.com/view10/M01/2B/23/wKhkGWWzklOASq9yAAJor6o2xaU183.jpg)
![數(shù)據(jù)結(jié)構(gòu) 期末機(jī)考 參考資料_第2頁(yè)](http://file4.renrendoc.com/view10/M01/2B/23/wKhkGWWzklOASq9yAAJor6o2xaU1832.jpg)
![數(shù)據(jù)結(jié)構(gòu) 期末機(jī)考 參考資料_第3頁(yè)](http://file4.renrendoc.com/view10/M01/2B/23/wKhkGWWzklOASq9yAAJor6o2xaU1833.jpg)
![數(shù)據(jù)結(jié)構(gòu) 期末機(jī)考 參考資料_第4頁(yè)](http://file4.renrendoc.com/view10/M01/2B/23/wKhkGWWzklOASq9yAAJor6o2xaU1834.jpg)
![數(shù)據(jù)結(jié)構(gòu) 期末機(jī)考 參考資料_第5頁(yè)](http://file4.renrendoc.com/view10/M01/2B/23/wKhkGWWzklOASq9yAAJor6o2xaU1835.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
returnOK;ElemTypecur_e,ElemType*pre_e){ElemTypee){
9inti=2;ElemType*newbase,*q,*p;
《數(shù)據(jù)結(jié)構(gòu)》的全)
部代碼實(shí)現(xiàn)(C語(yǔ)言StatusListEmpty(SqListL){ElemType*p=L.elem+1;if(i<1||i>(*L).length+
第二章線性表、鏈表if(L.length==0)while(i<=L.length&&*p!=1)
線性表的動(dòng)態(tài)分配順序存儲(chǔ)結(jié)構(gòu)returnTRUE;cur_e){returnERROR;
#defineLIST_INIT__SIZE10elseP++;if((*L).length>=
#defineLISTINCREMENT2returnFALSE;i++;(*L).listsize){
typedefstruct{})newbase=(ElemType
ElemType*elem;intListLength(SqListL){if(i>L.length)*)realloc((*L).elem,
intlength;returnL.length;returnINFEASIBLE;((*L).listsize+LISTINCREMENT)*
intlistsize;)else{sizeof(ElemType));
}SqList;StatusGetElem(SqListL,inti,*pre_e=*--p;if(!newbase)
順序表示的線性表的基本操作(12個(gè))ElemType*e){returnOK;exit(OVERFLOW);
StatusInitList(SqList*L){if(i<1||i>L.length))(*L).elem=newbase;
(*L).elem=(ElemTypeexit(ERROR);}(*L).listsize+=
*)malloc(LIST_INIT_SIZE**e=*(L.elem+i-1);StatusNextElem(SqListL,LISTINCREMENT;
sizeof(ElemType));returnOK;ElemTypecur_e,ElemType*next_e))
if(!(*L).elem)){q=(*L).elem+i-1;
exit(OVERFLOW);intLocateElem(SqListL,ElemTypeinti=1;for(p=(*L).elem+
(*L).length=0;e,Status(*compare)(ElemTypeJElemType*p=L.elem;(*L).length-1;p>=q;--p)
(*L).listsize=ElemType)){while(i<L.length&&*p!=*(p+1)=*p;
LIST_INIT_SIZE;ElemType*p;cur_e){*q=e;
returnOK;inti=1;i++;++(*L).length;
)p=L.elem;P++;returnOK;
StatusDestroyList(SqList*L){while(i<=L.length)}
free((*L).elem);&&!compare(*p++Je))if(i==L.length)StatusListDelete(SqList*L,inti,
(*L).elem=NULL;++i;returnINFEASIBLE;ElemType*e){
(*L).length=0;if(i<=L.length)else{ElemType*p,*q;
(*L).listsize=0;returni;*next_e=*++p;if(i<1||i>(*L).length)
returnOK;elsereturnOK;returnERROR;
)return0;}p=(*L).elem+i-1;
StatusClearList(SqList*L){}}*e=*pj
(*L).length=0;StatusPriorElem(SqListL,StatusListlnsert(SqList*L,inti,q=(*L).elem+(*L).length-
1;LinkListq;}if(q->data==cur_e){
for(++p;p<=q;++p)while(*L){StatusGetElem(LinkListL,inti,*pre_e=p->data;
*(p-1)=*p;q=(*L)->next;ElemType*e){returnOK;
(*L).length--;free(*L);intj=1;)
returnOK;*L=q;LinkListp=L->next;p=q;
})while(p&&j<i){)
StatusListTraverse(SqListL,returnOK;p=p->next;returnINFEASIBLE;
void(*vi)(ElemType*)){}j++;)
ElemType*p;StatusClearList(LinkListL){}StatusNextElem(LinkListL,
inti;LinkListp,q;if(!p||j>i)ElemTypecur_e,ElemType*next__e)
p=L.elem;p=L->next;returnERROR;{
for(i=1;i<=L.length;i++)while(p){*e=p->data;LinkListp=L->next;
vi(p++);q=p->next;returnOK;while(p->next){
printf("\n");free(p);)if(p->data==cur__e){
returnOK;p=q;intLocateElem(LinkListL,*next_e=
)}ElemTypee,p->next->data;
線性表的單鏈表存儲(chǔ)結(jié)構(gòu)L->next=NULL;Status(*compare)(ElemType.,returnOK;
structLNode{returnOK;ElemType)){}
ElemTypedata;}inti=0;p=p->next;
structLNode*next;StatusListEmpty(LinkListL){LinkListp=L->next;)
};if(L->next)while(p){returnINFEASIBLE;
typedefstructLNode*LinkList;returnFALSE;i++;}
單鏈表線性表的基本操作(12個(gè))elseif(compare(p->datae))StatusListlnsert(LinkListL,int
StatusInitList(LinkList*L){returnTRUE;returni;ElemTypee){
*L=}p=p->next;intj=0;
(LinkList)malloc(sizeof(structintListLength(LinkListL){)LinkListp=L,s;
LNode));inti=0;return0;while(p&&j<i-1){
if(!*L)LinkListp=L->next;}p=p->next;
exit(OVERFLOW);while(p){StatusPriorElem(LinkListL,j++;
(*L)->next=NULL;i++;ElemTypecur_e,ElemType*pre_e){)
returnOK;p=p->next;LinkListq,p=L->next;if(!p||j>i-1)
}}while(p->next){returnERROR;
StatusDestroyList(LinkList*L){returni;q=p->next;s=
(LinkList)malloc(sizeof(struct)if(!*L)else
LNode));線性表的靜態(tài)單鏈表存儲(chǔ)結(jié)構(gòu)exit(OVERFLOW);returnFALSE;
s->data=e;#defineMAXSIZE100(*L)->next=*L;}
s->next=p->next;typedefstruct{returnOK;intListLength_CL(LinkListL){
p->next=s;ElemTypedata;}inti=0;
returnOK;intcur;StatusDestroyList_CL(LinkList*L)LinkListp=L->next;
)}component,SLinkList[MAXSIZE];{while(p!=L){
StatusListDelete(LinkListL,int實(shí)現(xiàn)算法2.15、2.16的程序(3個(gè))LinkListq,p=(*L)->next;i++;
i,ElemType*e){intMalloc(SLinkListspace){while(p!=*L){p=p->next;
intj=0;inti=space[0].cur;q=p->next;}
LinkListp=L,q;訐⑴free(p);returni;
while(p->next&&j<i-1){space[0].cur=P=q;)
p=p->next;space[i].cur;}StatusGetElem_CL(LinkListL,int
j++;returni;free(*L);i,ElemType*e){
}}*L=NULL;intj=1;
if(!p->next||j>i-1)voidFree(SLinkListspace,intk)returnOK;LinkListp=L->next->next;
returnERROR;{}if(i<=0||i>
q=p->next;space[k].cur=space[0].cur;StatusClearList_CL(LinkList*L)ListLength_CL(L))
p->next=q->next;space[0].cur=k;{returnERROR;
*e=q->data;}LinkListp,q;while(j<i){
free(q);voidDestroyList(){*L=(*L)->next;p=p->next;
returnOK;)p=(*L)->next;j++;
)線性表的雙向鏈表存儲(chǔ)結(jié)構(gòu)while(p!=*L){}
StatusListTraverse(LinkListL,typedefstructDuLNode{q=p->next;*e=p->data;
void(*vi)(ElemType))ElemTypedata;free(p);returnOK;
(structDuLNode*prior^*next;p=q;}
LinkListp=L->next;}DuLNode,*DuLinkList;)intLocateElem_CL(LinkListL,
while(p){設(shè)立尾指針的單循環(huán)鏈表的12個(gè)基本操(*L)->next=*L;ElemTypee,
vi(p->data);作returnOK;Status(*compare)(ElemType,
p=p->next;StatusInitList_CL(LinkList*L){}ElemType)){
}*L=StatusListEmpty_CL(LinkListL){inti=0;
printf("\n");(LinkList)malloc(sizeof(structif(L->next==L)LinkListp=L->next->next;
returnOK;LNode));returnTRUE;while(p!=L->next){
i++;returnFALSE;DuLinkListq,p=(*L)->next;
if(compare(p->dataje)))q=p->next;while(p!=*L){
returni;StatusListInsert_CL(LinkList*Lp->next=q->next;q=p->next;
p=p->next;inti,ElemTypee){*e=q->data;free(p);
}LinkListp=(*L)->next,s;if(*L==q)p=q;
return0;intj=0;*L=p;)
}if(i<=0||i>free(q);free(*L);
StatusPriorElem__CL(LinkListL,ListLength_CL(*L)+1)returnOK;*L=NULL;
ElemTypecur_e,ElemType*pre_e){returnERROR;}returnOK;
LinkListq,p二L->next->next;while(j<i-1){StatusListTraverse_CL(LinkListL,)
q=p->next;p=p->next;void(*vi)(ElemType)){StatusClearList(DuLinkListL){
while(q!=L->next){j++;LinkListp=L->next->next;DuLinkListq,p=L->next;
if(q->data==cur_e){}while(p!=L->next){while(p!=L){
*pre__e=p->data;s=vi(p->data);q=p->next;
returnTRUE;(LinkList)malloc(sizeof(structp=p->next;free(p);
}LNode));)p=q;
p=q;s->data=e;printf("\n");)
q=q->next;s->next=p->next;returnOK;L->next=L->prior=L;
)p->next=s;)returnOK;
returnFALSE;if(p==*L)雙鏈循環(huán)線性表的基本操作(14個(gè)))
)*L=s;StatusInitList(DuLinkList*L){StatusListEmpty(DuLinkListL){
StatusNextElem_CL(LinkListL,returnOK;*L=if(L->next==L&&L->prior==
ElemTypecur_e,ElemType*next_e)}(DuLinkList)malloc(sizeof(DuLNodL)
(StatusListDelete_CL(LinkList*Le));returnTRUE;
LinkListp=L->next->next;inti,ElemType*e){if(*L){else
while(p!=L){LinkListp=(*L)->next,q;(*L)->next=(*L)->prior=returnFALSE;
if(p->data==cur_e){intj=0;*L;}
*next_e=if(i<=0||i>returnOK;intListLength(DuLinkListL){
p->next->data;ListLength_CL(*L))}elseinti=0;
returnTRUE;returnERROR;returnOVERFLOW;DuLinkListp=L->next;
}while(j<i-1){}while(p!=L){
p=p->next;p=p->next;StatusDestroyList(DuLinkList*L)i++;
}j++;p=p->next;
}while(p!=L){inti,ElemTypee){}
returni;if(p->data==cur_e){DuLinkListp,s;voidListTraverse(DuLinkListL,
)*pre_e=if(i<1||i>ListLength(L)void(*visit)(ElemType)){
StatusGetElem(DuLinkListL,inti,p->prior->data;+1)DuLinkListp=L->next;
ElemType*e){returnTRUE;returnERROR;while(p!=L){
intj=1;)p=GetElemP(L,i-1);visit(p->data);
DuLinkListp=L->next;p=p->next;if(!p)p=p->next;
while(p!=L&&j<i){)returnERROR;)
p=p->next;returnFALSE;s=printf("\n");
j++;)(DuLinkList)malloc(sizeof(DuLNod}
)StatusNextElem(DuLinkListL,e));voidListTraverseBack(DuLinkList
if(p==L||j>i)ElemTypecur_e,ElemType*next_e)if(!s)L,void(*visit)(ElemType)){
returnERROR;(returnOVERFLOW;DuLinkListp=L->prior;
*e=p->data;DuLinkListp=L->next->next;s->data=e;while(p!=L){
returnOK;while(p!=L){s->prior=p;visit(p->data);
}if(p->prior->data==s->next=p->next;p=p->prior;
intLocateElem(DuLinkListL,cur_e){p->next->prior=s;}
ElemTypee,*next__e=p->data;p->next=s;printf("\n");
Status(*compare)(ElemType,returnTRUE;returnOK;}
ElemType)){)}帶頭結(jié)點(diǎn)的線性鏈表類型
inti=0;p=p->next;StatusListDelete(DuLinkListL,typedefstructLNode{
DuLinkListp=L->next;}inti,ElemType*e){ElemTypedata;
while(p!=L){returnFALSE;DuLinkListp;structLNode*next;
i++;)if(i<1||i>ListLength(L))}LNode,*Link,"Position;
if(compare(p->dataje))DuLinkListGetElemP(DuLinkListL,returnERROR;typedefstructLinkList{
returni;inti){p=GetElemP(L,i);Linkhead,tail;
p=p->next;intj;if(1p)intlen;
}DuLinkListp=L;returnERROR;}LinkList;
return0;for(j=1;j<=i;j++)*e=p->data;具有實(shí)用意義的線性鏈表的24個(gè)基本操
}p=p->next;p->prior->next=p->next;作
StatusPriorElem(DuLinkListL,returnp;p->next->prior=p->prior;StatusMakeNode(Link*p,ElemType
ElemTypecur_e,ElemType*pre_e){)free(p);e){
DuLinkListp=L->next->next;StatusListinsent(DuLinkListL,returnOK;*p=
(Link)malloc(sizeof(LNode));(*L).tail=(*L).head;StatusAppend(LinkList*L,Links)*q=(*L).tail;
if(!*p)(*L).len=0;{p->next=NULL;
returnERROR;}inti=1;(*L).tail=p;
(*p)->data=e;returnOK;(*L)?tail->next=s;(*L).len--;
returnOK;}while(s->next){returnOK;
}StatusDestroyList(LinkList*L){s=s->next;}
voidFreeNode(Link*p){ClearList(L);i++;StatusInsBefore(LinkList*L,
free(*p);FreeNode(&(*L).head);)Link*p,Links){
*p=NULL;(*L).tail=NULL;(*L).tail=s;Linkq;
)(*L).len=0;(*L).len+=i;q=RriorPos(*Lj*p);
StatusInitList(LinkList*L){returnOK;returnOK;if(!q)
Linkp;))q=(*L).head;
P=StatusInsFirst(LinkList*L,LinkPositionPriorPos(LinkListL,s->next=*p;
(Link)malloc(sizeof(LNode));h.Links){Linkp){q->next=s;
if(P){s->next=h->next;Linkq;*p=s;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廣告位租賃與品牌推廣一體化服務(wù)合同
- 2025年度售樓處物業(yè)服務(wù)合同范本:智能家居售樓處系統(tǒng)升級(jí)
- 2025年度婚慶音響燈光租賃合同樣本
- 2025年度股權(quán)質(zhì)押合同糾紛解決機(jī)制協(xié)議
- 2025年環(huán)??萍计髽I(yè)股權(quán)合資合同范本
- 2025年度環(huán)保設(shè)備制造企業(yè)除塵設(shè)備銷售合同范本8篇
- 2025年度股東股份合作合同(創(chuàng)新型企業(yè)版)
- 2025年度智慧城市建設(shè)項(xiàng)目合同變更協(xié)議書范文
- 2025年度文化產(chǎn)業(yè)股權(quán)投資與版權(quán)保護(hù)合同
- 二零二四年度乒乓球俱樂(lè)部場(chǎng)地租賃與賽事票務(wù)服務(wù)合同3篇
- 以房抵債過(guò)戶合同范本
- 重大版小學(xué)英語(yǔ)四年級(jí)下冊(cè)期末測(cè)試卷
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”英語(yǔ) 試題(學(xué)生版+解析版)
- 2024浙江省農(nóng)發(fā)集團(tuán)社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- 慢性壓力對(duì)身體健康的影響與調(diào)理方法
- 《白蛇緣起》賞析
- Interstellar-星際穿越課件
- 蘇教版2022-2023學(xué)年三年級(jí)數(shù)學(xué)下冊(cè)開(kāi)學(xué)摸底考試卷(五)含答案與解析
- 2023學(xué)年度第一學(xué)期高三英語(yǔ)備課組工作總結(jié)
- 臨建標(biāo)準(zhǔn)化圖集新版
- 安監(jiān)人員考核細(xì)則(2篇)
評(píng)論
0/150
提交評(píng)論