




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗二 順序表的建立及基本操作方法實現實驗預備知識:1熟練運用指針進行程序設計,掌握結構體指針。2掌握使用結構體指針訪問結構體變量。3掌握指針作為函數的參數使用。一、實驗目的1. 理解和掌握線性表的類型定義方法。2. 掌握順序表中的基本運算,包括順序表的創(chuàng)建、元素的添加、刪除,判空及判滿等基本操作。二、實驗要求(本次實驗要求上交)【題目1】-驗證型以下順序表的基本操作已經給出,請進行驗證。源程序見附錄部分測試數據:10 20請將源程序附錄于此:#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#de
2、fine Icreament 20typedef int ElemType; /用戶自定義數據元素類型typedef struct ElemType *elem; /順序表的基地址 int length; /順序表的當前長度int listsize; /預設空間容量SqList; /線性表的順序存儲結構SqList* InitList() /創(chuàng)建空的順序表 SqList* L = (SqList*)malloc(sizeof(SqList);/定義順序表L if(!L) printf("空間劃分失敗,程序退出n"); return NULL; L->elem=(Ele
3、mType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L->elem) printf("空間劃分失敗,程序退出n"); return NULL; L->length=0; L->listsize=LIST_INIT_SIZE; return L;int CreateList(SqList* L) /創(chuàng)建順序表(非空) int number; /順序表中元素的個數 int i; /循環(huán)變量 printf("請輸入插入元素的個數:"); scanf("%d",&n
4、umber); if(number > LIST_INIT_SIZE) /一定要判斷輸入的個數是否大于順序表的最大長度 printf("輸入個數大于順序表的長度n"); return 0; for(i=0;i<number;i+) printf("輸入第%d個數: ",i+1); scanf("%d",L->elem+i); /L->elem+i:每次的輸入都保存在順序表元素中的下一個地址,而不是一直放在元素的首地址 /給順序表中每個數據元素賦值L->length=number; /當前順序表的長度 re
5、turn 1;void print(SqList* L) /輸出當前順序表 int i; printf("輸出:n"); for(i=0;i<L->length;i+) printf("第%d個數:%-3dn",i+1,*(L->elem + i); /L->elem+i:和輸入是一個道理 printf("順序表長度為:%dn", L->length); printf("n");int main() SqList* L = InitList(); /申請一個指向順序表的指針,并對其初始
6、化 if(!L) /判斷申請是否成功 printf("初始化線性表失敗n"); return 1; if(!CreateList(L) /判斷創(chuàng)建順序表是否成功 printf("創(chuàng)建順序表失敗n"); return 1; print(L); /打印順序表 free(L->elem); /釋放申請的順序表元素的內存 free(L); /釋放申請的順序表內存 return 0;請將運行結果圖附錄于此【題目2】(1) 有一個表元素按值遞增排列的順序表,編寫一個函數實現刪除順序表中多余的值相同元素(2) 有一個順序表,編寫一個在順序表中查找最大和最小值元素
7、的函數,并分析其時間復雜度算法分析:問題1:輸入元素的個數問題2:排序的次數請將源程序附錄于此:#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct ArrListint *arr;int length;List;List *Init(int n) List *L=(List*)malloc(sizeof(List);L->arr=(int *)malloc(sizeof(int)*n);L->length=0;return L;/輸入元素 void input(L
8、ist *L,int n) int i; int x; printf("請輸入%d個數n",n); for(i=0;i<n;i+) while(!(scanf("%d",&x) printf("輸入錯誤請重新輸入!n"); scanf("%*cn"); scanf("%*c"); L->arri=x; +L->length; /輸出元素 void display(List *L,int n)int i; for(i=0;i<n;i+) printf("第
9、%d一個元素是;%dn",i+1,L->arri); /順序表的清空void clearList(List *L) free(L->arr);L->length=0;free(L);L=NULL;/元素長度 int ListLength(List *L)return L->length;/對元素排序 void swap(List *L)int i;for(i=0;i<L->length;i+)if(L->arri>L->arri+1&&i+1!=L->length)int temp=L->arri;L-
10、>arri=L->arri+1;L->arri+1=temp;/刪除重復元素 void DelList(List *L) int i=0;int n=0;for(i=0;i<L->length;i+)if(L->arri=L->arri+1)n=i;while(n<L->length)L->arrn=L->arrn+1;n+; -L->length;/輸出最大最小元素 void maxmin(List *L) int min=L->arr0; int max=L->arr0; int i; for(i=1;i&
11、lt;L->length;i+) if(min>L->arri) min=L->arri; if(max<L->arri) max=L->arri; printf("最大元素是;%dn最小元素是;%dn",max,min);int main()int n;printf("請輸入插入元素的個數:");scanf("%d",&n);List *L=Init(n);input(L,n);display(L,n);swap(L);printf("順序表長度是;%dn",L->length); DelList(L); display(L,L->length); printf("順序表長度是;%dn",L->length);maxmin(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 薯類批發(fā)商市場供需分析考核試卷
- 貿易代理國際市場進入與擴張策略考核試卷
- 集成服務在智能電網分布式能源管理的實現考核試卷
- 拍賣行拍賣業(yè)務智能化發(fā)展路徑考核試卷
- 熱扎帶剛車間設計
- 麻醉科無痛技術臨床應用與發(fā)展
- 寓言故事匯報展示
- 服裝設計產品開發(fā)全流程
- Siphonaxanthin-生命科學試劑-MCE
- Anticonvulsant-agent-10-生命科學試劑-MCE
- 公路工程監(jiān)理質量評估報告
- 宴會廳經營管理方案
- 水利安全生產風險防控“六項機制”右江模式經驗分享
- 幼兒科學探究能力培養(yǎng)策略研究
- 《信息技術手段在幼兒園集體教學活動中的運用研究》課題研究總報告
- 《自動控制原理》張愛民課后習題答案解析
- SYT 6587-2021 電子式井斜儀校準方法-PDF解密
- MOOC 企業(yè)文化與商業(yè)倫理-東北大學 中國大學慕課答案
- 2024年浙江紹興市高速公路運營管理有限公司招聘筆試參考題庫含答案解析
- 幸福人生養(yǎng)老專題-課件
- 感染性疾病科崗前培訓
評論
0/150
提交評論