版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
#include〈stdio.h〉#include〈stdlib.h〉#include<string.h〉#defineLIST_INIT_SIZE100 //線性表存儲空間的初始分配量#defineLISTINCREMENT10 //線性表存儲空間的分配增量typedefintElemType;typedefenum{FALSE,TURE}Status;/*順序表*/typedefstruct{ElemType*elem;//存儲空間的基址intlength; //當前長度intlistsize;//當前分配的容量}SqList;StatusInitList_Sq(SqList*L) //建表{L-〉elem=(ElemType*)calloc(LIST_INIT_SIZE,sizeof(ElemType));if(!L-〉elem)exit(0); //申請空間失敗L->length=0; //空表長度為0L-〉listsize=LIST_INIT_SIZE;//初始的存儲容量returnTURE;}//InitList_SqStatusListlnsert_Sq(SqList*L,inti,ElemTypee) //插入元素{//在順序線性表L中第i個位置之前插入新的元素e,i的合法值為1〈=i〈=L-〉length.ElemType*newbase,*q,*p;if(i〈l||i〉L-〉length+1)returnFALSE;//i數(shù)值不合法if(L->length〉=L-〉listsize)//判斷存儲空間是否滿了,如果滿了就增加分配{newbase=(ElemType*)realloc(L-〉elem,(L-〉listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(0);L—〉elem=newbase;L-〉listsize+=LISTINCREMENT;}q=&(L-〉elem[iT]);for(p=&(L-〉elem[L-〉lengthT]);p〉=q;--p)*(p+1)=*p;//移動插入位置之后的元素*q=e;++L—〉length;returnTURE;}//ListInsert_SqStatusListDelete_Sq(SqList*L,inti,ElemType*e) //在順序表L中刪除第i個元素,并用e返回其值{ElemType*p,*q;if(i〈l||i〉L-〉length)returnFALSE;//i值不合法q=&(L-〉elem[iT]);e=q;for(p=&(L-〉elem[L-〉lengthT]),q++;q〈=p;q++)*(q-1)=*q;//刪除元素,左移后面的元素一L—〉length;returnTURE;}//ListDelete_SqintLocateElem_Sq(SqListL,ElemTypee,Status(*compare)(ElemType,ElemType)){//在順序線性表L中查找第1個值為e滿足compare()的元素的位序,若找到,返回在L中的位序,否則返回0inti=1;ElemType*p=L.elem;while(i<=L.length&&!(*compare)(*p++,e))++i;if(i<=L.length)returni;elsereturn0;}//LocateElem_SqStatusnumCompare(ElemTypep,ElemTypeq)//比較函數(shù){if(p==q)returnTURE;elsereturnFALSE;}voidprint_List(SqList*L,void(*printElemType)(ElemType)) //輸出整個表L,用到函數(shù)指針{inti;for(i=0;i〈L-〉length;i++){(*printElemType)(L-〉elem[i]);putchar(,\n,);}}voidprintElem(ElemTypee) //輸出一個元素{printf("%-8d",e);/*線性鏈表——雙向鏈表*/typedefstructLNode{//結(jié)點類型structLNode*prior;ElemTypedata;structLNode*next;}LNode,*Link;typedefstruct{Linkhead,tail;intlength;}LinkList;//鏈表類型//分別指向線性鏈表中的頭結(jié)點和最后一個結(jié)點//指示線性表中數(shù)據(jù)元素的個數(shù)StatusMakeNode(LNode**p,ElemTypee)//動態(tài)申請一個結(jié)點{if((*p=(LNode*)malloc(sizeof(ElemType)))!=NULL){(*p)-〉data=e;returnTURE;}elsereturnFALSE;}StatusInitList_LL(LinkList*LL)//初始化鏈表{LNode*p;ElemTypee=0;if(!MakeNode(&p,e))returnFALSE;//建立頭結(jié)點LL—〉head=LL—〉tail=p;p—〉prior=p—〉next=p;LL-〉length=0;returnTURE;}//InitList_LLLinkLocateElem_LL(LinkListLL,ElemTypee,Status(*compare)(ElemType,ElemType)){//在鏈表LL中查找第1個值為e滿足compare()的元素的結(jié)點,若找到,返回其地址Linkp=LL.head—〉next;while(p!=LL.head&&!(*compare)(e,p-〉data))p=p-〉next;if((*compare)(e,p-〉data)==TURE)returnp;elsereturnNULL;}//LocateElem_LLStatusListlnsert_LL(LinkList*LL,inti,ElemTypee){//在帶頭結(jié)點的鏈表第i個位置插入結(jié)點,存放元素eLinkp,p1;intj;p1=LL—〉head;if(!MakeNode(&p,e))returnFALSE;//申請結(jié)點if(i〉LL-〉length+l||i〈1)returnFALSE;//判斷i的合法性if(i==LL—>length+1) //當插入到表尾的情況{p—〉prior=LL—〉tail;p—〉next=LL—〉head;LL—〉tail—〉next=p;LL—〉tail=p;}else{for(j=0;j〈i;j++)p1=p1-〉next;//插入到其他位置時的情況,先將pl指向第i個有效結(jié)點p—〉prior=p1—〉prior;p—>next=p1;p1—〉prior—〉next=p;p]_〉prior二p;}LL-〉length++;returnTURE;}//Listlnsert_LLStatusListDelete_LL(LinkList*LL,inti,Links){//刪除鏈表中第i個有效結(jié)點intj;Linkp=LL—〉head;if(i〉LL-〉length||i<1)returnFALSE;//判斷i的合法性for(j=0;j<i;j++)p=p—>next;//先將pl指向第i個有效結(jié)點p—〉prior—〉next=p—>next;p—>next—〉prior=p—〉prior;*s二*p;LL—〉length——;returnTURE;}//ListDelete_LLvoidprint_LL(LinkList*LL,void(*printElemType)(ElemType)){inti;LNode*p=LL—〉head—〉next;if(LL-〉length==0)printf("\n表中沒有元素!\n");else{for(i=O,p=LL-〉head-〉next;i〈LL-〉length;i++){(*printElemType)(p-〉data);p=p—〉next;printf("\n");}}}//print_LLvoidzhuJieMian(){v-krc-J4—P(‘‘ *4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4*\v?''IirIlliIl ”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心\I"***************** ^線 丿性 ^表 *****************\n""**** ****\n"********\n""****———1——順序表****\n"********\n""**** 2 鏈表 ****\n""**** ****\n"****———0———— 退出 - ****\n"********\n"〃 777777"********\n************** 請輸入各個功能對應得數(shù)字*****************\n"" \n");}voidshunXuBiao(){v>rc-J 4—P(〃?X?*4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4*\v?''IirIlliIl ”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心\I"vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*>T>>T>"**** TOC\o"1-5"\h\z"**** 1 插"**** 2 冊0"**** 3 查"****——— 4 ——輸"****———— 5 ——表vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*\!<■?〃\II ****\n"入 ****\n"除 ****\n"詢 ****\n"出 ****\n"長 ****\n""**** 0 退出 ****\n""**** ****\n"************** 請輸入各個功能對應得數(shù)字 *****************\n"" \n");}voidlianBiao(){v-krc-J4—P(‘‘ *4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4**4*\v?''IirIlliIl ”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心”心\I"vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*鏈表vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*\ 〃\I1"**** ****\n"**** 1--- 插入——****\n"**** 2--—— 刪除---****\n"**** 3 --—— 查詢****\n"**** 4--- 輸出---****\n"**** 5 --- 表長---****\n"**** 0--—— 退出---****\n〃 C"****7****\n"vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*請輸入各個功能對應得數(shù)字vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*vt*\ 〃\I1〃 \n");voidmain(){SqListL;LinkListLL;intchoice;inti;InitList_LL(&&LL);InitList_Sq(&L);for(i=1;i〈=10;i++){ListInsert_LL(&LL,i,i);ListInsert_Sq(&L,i,i*10);}do{zhuJieMian();printf("請輸入:");scanf("%d",&choice);switch(choice){case1:intchoice;system("els");do{shunXuBiao();printf("請輸入:");scanf("%d",&choice);switch(choice){case1:{inti;ElemTypee;printf("\n進行插入操作!\n");printf(〃請輸入要插入元素的值:〃);scanf("%d",&e);printf(〃請輸入要將該元素插入的位置:〃);scanf("%d",&i);if(ListInsert_Sq(&L,i,e))printf("插入成功!\n");elseprintf("插入失?。n");system("PAUSE");}break;case2:{inti;ElemTypee;printf("\n進行刪除操作!\n");printf(〃請輸入將要刪除元素的的位置:〃);scanf("%d",&i);if(ListDelete_Sq(&L,i,&e))printf("刪除成功!\n");elseprintf("刪除失敗!\n");system("PAUSE");}break;case3:{intlocation;ElemTypee;printf("\n進行查找工作!\n");printf("請輸入要查找的值:");scanf("%d",&e);if(location=LocateElem_Sq(L,e,numCompare))printf("該值在表中第%d的位置!\n",location);elseprintf("該表中沒有該值!\n");system("PAUSE");}break;case4:{printf(〃表里元素如下:\n");print_List(&L,printElem);system("PAUSE");}break;case5:{printf("\n順序表表長為**%d**!\n",L.length);system("PAUSE");}break;case0:break;default:printf("輸入有誤,請重新輸入!\n");system("PAUSE");break;}system("els");}while(choice);}break;case2:{intchoice;system("els");do{lianBiao();printf("請輸入:");scanf("%d",&choice);switch(choice){case1:{inti;ElemTypee;printf("\n進行插入操作!\n");printf("請輸入要插入元素的值:");scanf("%d",&e);printf(〃請輸入要將該元素插入的位置:〃);scanf("%d",&i);if(ListInsert_LL(&LL,i,e))printf("插入成功!\n");elseprintf("插入失??!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子房屋買賣合同格式范本編寫示例
- 投標安全承諾函
- 八年級生物下冊 7.1.1 植物的生殖教案 (新版)新人教版
- 河北省安平縣八年級地理上冊 1.1 遼闊的疆域教學設計 新人教版
- 八年級物理上冊 第二章 聲現(xiàn)象 第2節(jié) 聲音的特性第2課時聲音的特性綜合應用教案 (新版)新人教版
- 2023六年級英語上冊 Review Module Unit 2教案 外研版(三起)
- 2024-2025學年新教材高中化學 第1章 原子結(jié)構(gòu) 元素周期表 第2節(jié) 元素周期律和元素周期表 微專題二 元素“位-構(gòu)-性”之間的關系教案 魯科版必修第二冊
- 2024-2025年高中語文 第3單元 單元導讀教案 粵教版必修1
- 2024-2025學年高中歷史 第四單元 工業(yè)文明沖擊下的改革 第15課 戊戌變法(2)教學教案 岳麓版選修1
- 雨污管道勞務包工細分合同(2篇)
- 電解質(zhì)紊亂的原因與處理圖課件
- 批創(chuàng)思維導論(答案)
- 五年級上冊英語課件-Unit7 At weekends第四課時|譯林版(三起) (共18張PPT)
- 醫(yī)美行業(yè)商業(yè)計劃書課件
- 慕課《自然辯證法概論》課后習題及期末考試參考答案
- 小學譯林版英語五年級上冊Unit4-Cartoon-time名師課件
- 畢業(yè)設計-裝配流水線PLC控制系統(tǒng)
- 公安派出所建筑外觀形象設計規(guī)范1
- 唱游子吟小兒垂釣課件小學音樂蘇少01課標版三年級上冊課件1
- (施工方案)雙梁橋式起重機安裝施工方案
- 幼兒園教學課件問個不停的小鱷魚tigerlee
評論
0/150
提交評論