




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、、實(shí)驗(yàn)?zāi)康?、掌握線性表中元素的前驅(qū)、后續(xù)的概念。2、掌握順序表與鏈表的建立、插入元素、刪除表中某元素的算法。3、對線性表相應(yīng)算法的時(shí)間復(fù)雜度進(jìn)行分析。4、理解順序表、鏈表數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)(優(yōu)缺點(diǎn)) 。二、實(shí)驗(yàn)預(yù)習(xí)說明以下概念1、線性表:2、順序表:3、鏈表:三、實(shí)驗(yàn)內(nèi)容和要求1、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#include<>#include<># define ERROR 0# define OK 1初始分配的順序表長度*/溢出時(shí),順序表長度的增量*/定義表元素的類型*/存儲空間的基地址*/順序表的當(dāng)前長度*/當(dāng)前分配的存儲空間*/
2、# define INIT_SIZE 5 /* #define INCREM 5/*typedef int ElemType; /* typedef struct SqlistElemType *slist; /* int length; /* int listsize; /* Sqlist;int InitList_sq(Sqlist *L); /*構(gòu)造一個(gè)空的線性表L*/int CreateList_sq(Sqlist *L,int n); /*構(gòu)造順序表的長度為n */int ListInsert_sq(Sqlist *L,int i,ElemTypee);/* 在 L 中第 i 個(gè)位置
3、之前插入新的數(shù)據(jù)元素e, L的長度加1*/int PrintList_sq(Sqlist *L); /*輸出順序表的元素 */int ListDelete_sq(Sqlist *L,int i); /*刪除第 i 個(gè)元素 */int ListLocate(Sqlist *L,ElemType e); /*查找值為 e 的元素 */ int InitList_sq(Sqlist *L)L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType);if(!L->slist) return ERROR;L->length=0;L->
4、;listsize=INIT_SIZE;return OK;/*InitList*/int CreateList_sq(Sqlist *L,int n)ElemType e;int i;for(i=0;i<n;i+)printf("input data %d",i+1);scanf("%d",&e);if(!ListInsert_sq(L,i+1,e)return ERROR;return OK;/*CreateList*/*輸出順序表中的元素*/int PrintList_sq(Sqlist *L)int i;for(i=1;i<=
5、L->length;i+)printf("%5d",L->slisti-1);return OK;/*PrintList*/int ListInsert_sq(Sqlist *L,int i,ElemType e)int k;if(i<1|i>L->length+1)return ERROR;if(L->length>=L->listsize)L->slist=(ElemType*)realloc(L->slist,(INIT_SIZE+INCREM)*sizeof(ElemType);if(!L->slis
6、t)return ERROR;L->listsize+=INCREM;for(k=L->length-1;k>=i-1;k-)L->slistk+1= L->slistk;L->slisti-1=e;L->length+;return OK;/*ListInsert*/ /*在順序表中刪除第i個(gè)元素*/ int ListDelete_sq(Sqlist *L,int i)/*在順序表中查找指定值元素,返回其序號 */int ListLocate(Sqlist *L,ElemType e)int main()Sqlist sl;int n,m,k;pri
7、ntf("please input n:"); /*輸入順序表的元素個(gè)數(shù)*/scanf("%d",&n);if(n>0)printf("n1-Create Sqlist:n");InitList_sq(&sl);CreateList_sq(&sl,n);printf("n2-Print Sqlist:n");PrintList_sq(&sl);printf("nplease input insert location and data:(location,data)n
8、");scanf("%d,%d",&m,&k);ListInsert_sq(&sl,m,k);printf("n3-Print Sqlist:n");PrintList_sq(&sl);printf("n");)elseprintf("ERROR");return 0;)運(yùn)行結(jié)果算法分析調(diào)用ListInsert_sq() 函數(shù),進(jìn)行插入操作,并輸出插入新元素后的狀態(tài),時(shí)間復(fù)雜度,空間復(fù)雜度較少,2、為第1題補(bǔ)充刪除和查找功能函數(shù),并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。 刪除
9、算法代碼:int ListDelete_sq(Sqlist *L,int i) int p;if(i<1|i>L->length)return ERROR;for(p=i-1;p<L->length-1;p+)L->slistp=L->slistp+1;L->length -;return OK;運(yùn)行結(jié)果算法分析主函數(shù)調(diào)用ListDelete_sq 實(shí)現(xiàn)刪除操作,在輸出刪除之后的線性表,時(shí)間復(fù)雜度低查找算法代碼:int ListLocate(Sqlist *L,ElemType e)int i=0;while(i<=L->length
10、) && (L->slist i!=e)i+;if(i<=L->length )return (i+1);elsereturn -1;運(yùn)行結(jié)果算法分析主函數(shù)通過調(diào)用ListLocate 實(shí)現(xiàn)查找功能,然后輸出查找元素的序號,時(shí)間復(fù)雜度低3、閱讀下面程序,在橫線處填寫函數(shù)的基本功能。并運(yùn)行程序,寫出結(jié)果。#include<>#include<>#define ERROR 0#define OK 1typedef int ElemType;/*定義表元素的類型 */typedef struct LNode /*線性表的單鏈表存儲 */Ele
11、mType data;struct LNode *next;LNode,*LinkList;LinkList CreateList(int*/void PrintList(LinkList L); /*int GetElem(LinkList L,int替換成e */n);/* 構(gòu)造順序表的長度為 n輸出帶頭結(jié)點(diǎn)單鏈表的所有元素*/i,ElemType *e); /* 在順序表 L中,將第i個(gè)元素存在時(shí),LinkList CreateList(int n)LNode *p,*q,*head;int i;head=(LinkList)malloc(sizeof(LNode); p=head;fo
12、r(i=0;i<n;i+)q=(LinkList)malloc(sizeof(LNode); scanf("%d",&q->data); /* q->next=NULL;/*p->next=q;/*p=q; return head; /*CreateList*/void PrintList(LinkList L) LNode *p;head->next=NULL;printf("input data %i:",i+1);輸入元素值*/結(jié)點(diǎn)指針域置空*/新結(jié)點(diǎn)連在表末尾*/p=L->next; /*p指向單鏈表的
13、第1個(gè)元素*/while(p!=NULL)printf("%5d",p->data);p=p->next;/*PrintList*/int GetElem(LinkList L,int i,ElemType *e)LNode *p;int j=1;p=L->next;while(p&&j<i) p=p->next;j+;if(!p|j>i)return ERROR;*e=p->data;return OK;/*GetElem*/int main()int n,i;ElemType e;LinkList L=NULL;
14、/*定義指向單鏈表的指針 */printf("please input n:"); /*輸入單鏈表的元素個(gè)數(shù) */scanf("%d",&n);if(n>0)printf("n1-Create LinkList:n");L=CreateList(n);printf("n2-Print LinkList:n");PrintList(L);printf("n3-GetElem from LinkList:n");printf("input i=");scanf(&q
15、uot;%d",&i);if(GetElem(L,i,&e)printf("No%i is %d",i,e);elseprintf("not exists");elseprintf("ERROR");return 0;運(yùn)行結(jié)果算法分析主函數(shù)調(diào)用GetElem函數(shù)實(shí)現(xiàn)輸出序號所對應(yīng)的元素,時(shí)間復(fù)雜度低4、為第3題補(bǔ)充插入功能函數(shù)和刪除功能函數(shù)。并在主函數(shù)中補(bǔ)充代碼驗(yàn)證算法的正確性。插入算法代碼:int ListInsert_sq(LNode *L,int i,ElemType e)int k;if(i<1
16、|i>L->length+1)return ERROR;if(L->length>=L->listsize)L->data =(ElemType*)realloc(L->data, (INIT_SIZE+INCREM)*sizeof(ElemType);if(!L->data)return ERROR;L->listsize+=INCREM;for(k=L->length-1;k>=i-1;k-)L->datak+1= L->datak; L->slisti-1=e;L->length+;return OK;/*ListInsert*/運(yùn)行結(jié)果算法分析調(diào)用ListInsert_sq() 函數(shù),進(jìn)行插入操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 周末攝影活動方案
- 哈爾濱地產(chǎn)活動策劃方案
- 國慶兒童拍攝活動方案
- 園林兒童攀巖活動方案
- 國慶節(jié)親子美工活動方案
- 員工幫帶活動方案
- 國慶節(jié)餐飲公司活動方案
- 商會端午團(tuán)建活動方案
- 商旅聯(lián)動活動方案
- 團(tuán)結(jié)教育系列活動方案
- 2025四川省建筑安全員B證考試題庫及答案
- 質(zhì)量管理體系變更管理制度
- 安保人員操作技能實(shí)操培訓(xùn)
- 系統(tǒng)集成方案及實(shí)施步驟
- 2025年中科院心理咨詢師培訓(xùn)考試復(fù)習(xí)題庫-上(單選題)
- 《數(shù)據(jù)類型概述》課件
- 植物細(xì)胞的分子生物學(xué)研究-深度研究
- 兒童專注力訓(xùn)練300題可打印
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 2025年度工業(yè)園區(qū)物業(yè)管理及服務(wù)收費(fèi)標(biāo)準(zhǔn)及細(xì)則
評論
0/150
提交評論