【數據結構】線性表的基本操作_第1頁
【數據結構】線性表的基本操作_第2頁
【數據結構】線性表的基本操作_第3頁
【數據結構】線性表的基本操作_第4頁
【數據結構】線性表的基本操作_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、【數據結構】線性表的基本操作#include <stdio.h>自定義mt類型的ElemType元素 tvpedef int ElemType;/自定義mt類型的Status返回狀態tvpedef int Status;stmct ListElemType *list 1; 指向線性表的第一個節點 int length;線性表的實際長度int listSize; 線性表的最大長度324;本 操 作 開 始*附加1:給線性表增加空間Status AgaiiiNIalloc(stnict List *L1)ElemType *p = (ElemType *)realloc(L 1 -&

2、gt;list 1 ,(L 1 ->listSize + 1)*sizeof(ElemType); if(!p)pnntfC存儲空間分配失敗! J;exit(l);Ll->listl = p; /*使listl指向新線性表空間*/Ll->listSize=Ll->HstSize + 1; /*把線性空間人小修改為新的長度*/附加2:遍歷線性表元素Status Traverse(stiiict List *L1)int i;fbi(i = 0;i < Ll->lengtli;i+)printf(”d1 創建線性表,給定長度Status IiiitList(st

3、nict List *Ll.iiit nis) if(nis<0)pnntf("初始化線性表的長度不能小于Oii"); exit(l);Ll->length = 0;Ll->listSize = nis;給listl分配空間,單元人小為定義的ElemTvpe類型,長度為ms Ll->listl = (ElemType *)malloc(ms * sizeof(ElemType);if(!Ll)pnntf(”空間分配失敗! ”); exit(l);elsepnntf(”空間分配成功!printf(”您分配的空間大小為%dn“,ms);return 0;

4、2.銷毀線性表Status DestoryList(stmct List *L1)if (LI !=NULL)Ll->length = 0;Ll->listSize = 0; fiee(Ll);putf(”銷毀成功! E);return 0;3.清空線性表Status CleaiList(stmct List *L1)清空只需要將線性表的長度記為0即可。Ll->length = 0;printf("清空成功! n”);return 0;4.判斷線性表是否為空(如果為空返回0,如果不為空返回1)Status ListEmpty(stiuct List *L1)if(L

5、l->length != 0)pnntf("線性表不為空! n");return 1;pnntf(”線性表為空! n“); return 0;5 返回線性表的當前長度mt ListLength(stmct List *L1)return LI->length;6.返回第1個元素的值ElemType GetElem(stmct List *Lhiiit i)if(i < l)|(i > Ll->listSize)查找的位置超出線性表的范I制! ”);退出exit ;else返回第pos個元素的值return L1 ->list li-l;7

6、.判斷某個元素是否是線性表元素,如果是,返回這個元素第一次在線性表中出現的位置, 如果不是返回0mt IsElem(stmct List *L1,ElemType e)必須要先定義,后使用!int i;fbr(i = 0;i<L 1 ->length;i+) if(Ll->listli=e)因為i是從0,開始,所有返回i+lretuni i + 1;如果沒有找到相應的元素,返回-1;return 0;&返回某個元素的前驅元素(如果這個元素是第一個,則提示“這是第一個元素”)1、如果這個元素不是線性表元素,返回2、如果這個元素是線性表第一個元素,返回0,提示第一個元素沒

7、有前驅元素ElemType PiiorElem(stnict List *LLElemType e)判斷這個元素是否是線性表元素,如果是返回它的第一個位置調用IsElem函數,并將結果返回給temp變量int temp = IsElem(Ll,e);if(temp = 0)pnmf(”這個元素不是線性表的元素”);return -1;else= 1)pnmf(”這個元素是第一個元素,沒有前驅元素”);return 0;else返回e元素的前驅元素return L l->list 1 temp-2;9.返回某個元素的后繼元素(如果這個元素是最后一個,則提示“這是最后一個元素”) 1、如果這

8、個元素不是線性表元素,返回2、如果這個元素是線性表的最后一個元素,返回0,提示最后一個元素沒有后繼元素 ElemType NextElem(stmct List *Ll,ElemType e)/判斷這個元素是否是線性表元素,如果是返回它的第一個位置調用IsElem函數,并將結果返回給temp變量int temp = IsElem(Ll,e);if(temp = 0)pnmf(”這個元素不是線性表的元素”);return -1;else if(tenip = Ll->length)pnmf(”這個元素是最后一個元素,沒有后繼元素”);return 0;else返回e元素的后繼元素retur

9、n L l->list 1 temp;10.在線性表的指定位置1之前插入元素eStatus Listlnsert(stnict List *Ll,iiit i.ElemType e)int temp;if(i < l)|(i > Ll->length + 1)pimtfC'i越界,不能插入”);exit(l);如果線性表的長度等于最人長度,增加空間if(Ll->length = Ll->listSize)每次增加1個ElemType單位的個空間AgauiMalloc(Ll);將位置1之后的元素向后以一個位置fbr(temp = (L1 ->le

10、ngtli+1 );temp >= i;temp)Ll->listltemp = Ll->listltemp-l;在i-l的位置插入新元素eLl->listli-l = e;/長度加1Ll->length = Ll->length +1;return 0;11.刪除線性表中指定位置1的元素e,并將e返回ElemType ListDelete(stnict List *Lljnt i)ElemTvpe e;int temp;if(i V l)|(i > Ll->length)pnntf(”要刪除的元素超出線性表的范I制! ”); exit(l);將

11、第1個位置的元素返回給ee = Ll->listli-l;fbr(temp = i;i < Ll->length;i-H-)將第i+l個元素的值賦值給第i個位置Ll->HstlM = Ll->listli;將長度減去1Ll->length = Ll->length - 1;return e;*編 寫 的 函*1創建一IiiitList(stnict List *Ll,iiit ms), 2銷毀一DestoiyList(stnict List *L1)3清空一CleaiList(stmct List *L1), 4是否為空一ListEmpty(stmct

12、 List *L1)5返回長度ListLength(sti-uct List *L1), 6返回第 i 個元素值一GetElem(struct List *L1 jnt i) 7.判斷e是否是線性表的元素,如果是返回第一個位置-IsElem(sti-uct List *L1,ElemType e) &返回某個元素的前驅PnorElem(stmct List *L1,ElemType e)9返回某個元素的后繼-NextElem(stmct List *Ll.ElemType e)/10在線性表指定位置 i 之前插入元素 e-ListIiisert(sti-uct List *Lljnt

13、iElemType e)11刪除線性表指定位置1的元素,將結果e返回-ListDelete(sti-uct List *LLiiit i)*mtint itemp = 0;int aiiytemp = 0;int i = 1;int listlengtli = 0;ElemType e;stmct List LI;purff線性表的基本操作! E);printfC* 初始化操 pmitf(”請輸入初始化的長度:”); scanf(H%d,&itemp);1創建一InitList(stiuct List *Ll,int ms)IiutList( &L 1 ,itemp);prmt

14、f(”請輸入線性表的值,不能超過4個,以911結束,911不算長度:fbr(i = l;i <= itemp;i+)scanf(”d”,&e);這里不能是exit, exit直接退出了所有程序,所以是breakif(e = 911) break;10在線性表指定位置1之前插入元素eListliisert (&L 1 ,i,e);5返回長度一ListLength(struct List *L1)listlength = ListLength( &L 1);printf(”目前,線性表的長度為:%dnMistlengtli);遍歷線性表pnntf(- 前,線性表的值為

15、:n”);遍歷 > 在Traverse中輸出Traverse(&L1);6返回第 i 個元素值一GetElem(struct List *Lljnt i)pmitf(”請輸入,要返回第幾個元素值:5”);輸入時,要在這里賦值地址“&”scmff%cT'、&anytemp);piintf(M®%d 個位置元素的對應的元素值為:%d,n,anytemp.GetElem(&Ll、anytemp);&返回某個元素的前驅一PnorElem(stmct List *Ll,ElemType e)prmtf(”返回線性表元素的前驅,請輸入線性表元素: scanff%cT,&e);printf(”元素d 的前驅元素是:%dn,r,e,PriorElem(&Ll,e);9返回某個元素的后繼NextElem(stmct List Ll.ElemTe e)prmtf(”返回線性表元素的后繼,請輸入線性表元素: scrmfC%dt&e);piintfC1 元素1 的后繼元素是:dn”,eNextElem(&L1©);11.刪除線性表指定位置i的元素,將結果e返回一ListDelete(struct List *Ll,int 1) listlength = ListLength( &

溫馨提示

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

評論

0/150

提交評論