實驗一線性表的實驗_第1頁
實驗一線性表的實驗_第2頁
實驗一線性表的實驗_第3頁
實驗一線性表的實驗_第4頁
實驗一線性表的實驗_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗一 線性表的實驗實驗課程名: C語言程序設(shè)計專業(yè)班級: 學(xué)號: 姓名 實驗時間: 實驗地點: 指導(dǎo)教師: 一、實驗?zāi)康募耙?、掌握用Visual C+6.0調(diào)試順序表的基本方法。2、掌握順序表的基本操作,插入、刪除、查找、以及有序順序表的合并等算法的實現(xiàn)。3、掌握用Visual C+6.0上機調(diào)試單鏈表的基本方法。4、掌握單鏈表的插入、刪除、查找、求表長以及有序單鏈表的合并算法的實現(xiàn)。5、進一步掌握循環(huán)單鏈表的插入、刪除、查找算法的實現(xiàn)。二、實驗內(nèi)容、任務(wù)一:用順序表實現(xiàn)通訊錄管理(2) 構(gòu)建如表1所示的順序表并輸出檢驗,實現(xiàn)表1。(3) 增加插入記錄的功能并輸出檢驗,實現(xiàn)表2。(4)

2、增加按學(xué)號查找的功能并運行驗證。(5) 增加刪除記錄的功能并運行驗證。表1學(xué)號姓名性別手機號碼QQ號2013001張珊女1380000191934578表22013002李思女1391012197887965322013003陳琪女1378945001237891232013004王強男1363456785665437832013005趙括男1353440897656792013006劉剛男1338654321198315注意:用結(jié)構(gòu)化程序設(shè)計的方法實現(xiàn)即(其中的)把單一功能設(shè)計成一個獨立的函數(shù)。如構(gòu)建順序表設(shè)計成一個函數(shù),同樣插入、查找、刪除、輸出也設(shè)計成獨立的函數(shù)。解答:(1)源代碼:#i

3、nclude<stdio.h>#include<string.h>#include<stdlib.h>#define MaxSize 10typedef structchar xuehao14;/學(xué)號char name20; /姓名int sex; /性別char tel14; /聯(lián)系電話char qq12; /QQ號ElemType;typedef structElemType *list;int length;int size;SeqList;void InitSeqList( SeqList *L)char flag;int i,n;ElemType

4、*p;L->list=( ElemType * )malloc(MaxSize*sizeof( ElemType );L->length=0 ;L->size=MaxSize ; printf("是否輸入初始數(shù)據(jù)?(Y/N)");scanf("%c",&flag);if(flag='N'|flag='n') return;printf("請輸入初始化數(shù)據(jù)的個數(shù):");scanf("%d",&n);if(n>L->size) printf(

5、"數(shù)據(jù)太多,不足以存儲!");return;p=L->list;L->length=n;for(i=0;i<n;i+)printf("請輸入第%d個數(shù)據(jù)(學(xué)號 姓名 性別(0或1) 聯(lián)系電話 QQ號):n",i+1);scanf("%s%s%d%s%s",p->xuehao,p->name , &p->sex , p->tel ,p->qq ); p+;return;void PrintSeqList(SeqList *L)int i;printf("學(xué)號 姓名 性別

6、聯(lián)系電話 QQ號n");for( i=0 ; i<L->length ; i+ )printf("%st%st",L->listi.xuehao,L-> ); if(L->listi.sex) printf("男"); else printf("女"); printf("t%st%6sn", L->listi.tel ,L->listi.qq ); /*int main()SeqList L;InitSeqList( &L );Prin

7、tSeqList( &L );return 0;*/ int InsertSeqList(SeqList *L,int i,ElemType *e)ElemType *q,*p;if(L->length+1>L->size ) printf("表滿,失??!");return 0;if(i<1|i>L->length+1) printf("插入位置錯誤,失??!");return 0;q=&(L->listi-1);for(p=&(L->listL->length-1);p>

8、=q;p-)*(p+1)=*p ;*(p+1)=*e;L->length+;return 1;/*int main()ElemType e;SeqList L;InitSeqList(&L);PrintSeqList(&L);printf("請輸入要插入的數(shù)據(jù)(學(xué)號 姓名 性別(0或1) 聯(lián)系電話 QQ號):n");scanf("%s%s%d%s%s",e.xuehao, , &e.sex , e.tel ,e.qq );printf("學(xué)號 姓名 性別 聯(lián)系電話 QQ號n");printf(

9、"%st%st",e.xuehao, ); if(e.sex) printf("男"); else printf("女"); printf("t%st%6sn", e.tel ,e.qq ); InsertSeqList(&L,2,&e);PrintSeqList(&L);return 0;*/ int LocateList(SeqList *L,char *x) int i=0; while(i<L->length &&strcmp(L->li

10、sti.xuehao ,x ) +i; if(i<L->length ) printf("n學(xué)號 姓名 性別 聯(lián)系電話 QQ號n"); printf("%st%st",L->listi.xuehao,L->); if(L->listi.sex) printf(" 男 "); else printf(" 女 "); printf("%st%6sn",L->listi.tel,L->listi.qq); return i+1; retur

11、n 0; /*int main()SeqList L;InitSeqList(&L);PrintSeqList(&L);printf("輸出查詢結(jié)果:n");LocateList(&L,"02");return 0;*/int DeleteList(SeqList *L,int i) int j; ElemType *q,*p; if(L->length =0) printf("表空,刪除失??!n");return 0; if(i<1|i>L->length) printf("

12、刪除位置錯,失??!n");return 0; p=&(L->listi-1); for(q=&(L->listL->length-1);q<=p;p-) *(p-1)=*p; L->length -; return 1;int main()int i;SeqList L;InitSeqList(&L);PrintSeqList(&L);printf("請輸入刪除位數(shù):");scanf("%d",&i); DeleteList(&L,i);PrintSeqList(&a

13、mp;L);return 0;(2)運行結(jié)果:2. 插入功能3. 查詢功能4. 刪除功能(3) 運行結(jié)果分析: 本次作業(yè)利用C語言實現(xiàn)順序表初始化、插入、刪除、查找、的基本操作。任務(wù)二:用鏈表實現(xiàn)通訊錄管理1、 構(gòu)建通訊錄的鏈表并輸出檢驗,實現(xiàn)表1。2、增加插入記錄的功能并輸出檢驗,實現(xiàn)表2。3、增加按學(xué)號查找的功能并運行驗證。4、增加刪除記錄的功能并運行驗證。解答:(1)源代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct char xuehao14;/學(xué)號 char

14、 name20; /姓名 int sex; /性別 char tel14; /聯(lián)系電話 char qq12; /QQ號DataType;typedef struct LNode DataType data; struct LNode *next;LNode,*LinkList;LinkList CreatList()/頭插法建立鏈表 LinkList head; head = (LinkList)malloc(sizeof(LNode); LinkList p , s ; s = head ; char flag='y' head->next =NULL; while(f

15、lag='Y')|(flag='y') p=(LinkList)malloc(sizeof(LNode); if(!p) exit(-1); printf("請輸入數(shù)據(jù)(學(xué)號 姓名 性別(0或1) 聯(lián)系電話 QQ號):n"); scanf("%s%s%d%s%s",p->data.xuehao,p->,&p->data.sex,p->data.tel,p->data.qq); p->next = s->next ; s->next = p ; s =

16、 p ; getchar(); printf("繼續(xù)輸入嗎?(y/n):"); scanf("%c",&flag);printf("n"); return head; void PrintList(LinkList head) LNode *p; p=head->next; printf("學(xué)號 姓名 性別 聯(lián)系電話 QQ號n"); printf("-n"); while(p!=NULL) printf("%-14s%-14s",p->data.xueha

17、o,p->); if(p->data.sex) printf("男 "); else printf("女 "); printf("%-14s%-10sn",p->data .tel,p->data.qq); printf("-n"); p=p->next ; /*int main() LinkList head; head=CreatList();PrintList(head);return 0;*/void InsertLinkList(LinkList head)

18、/考慮實際情形,在教材的基礎(chǔ)作了一個變化,將插入位置和插入的數(shù)據(jù)信息改為輸入,不作為形參傳入信息。 LinkList p,s; int i; int j; p=head->next; j=1; printf("請輸入要插入結(jié)點位置:"); scanf("%d",&i); while(p&&j<i-1) p=p->next ; j+; if(!p|j<i-1) printf("錯誤!n");return; s=(LinkList)malloc(sizeof(LNode); printf(&

19、quot;請輸入要插入的數(shù)據(jù):n"); printf("學(xué)號 姓名 性別(0或1) 聯(lián)系電話 QQ號n"); scanf("%s%s%d%s%s",s->data.xuehao,s->,&s->data.sex,s->data.tel,s->data.qq); s->next =p->next ; p->next =s; return;void GetElemList(LinkList head,DataType *e)/讀取位置改為在函數(shù)內(nèi)輸入 LinkList p;

20、int i,j=1; printf("請輸入要讀取第幾個元素:"); scanf("%d",&i); p=head->next; while(p&&j<i) p=p->next ;j+; if(!p|j>i) printf("沒有找到!n");return; printf("學(xué)號 姓名 性別(0或1) 聯(lián)系電話 QQ號n"); printf("%-14s%-14s",p->data.xuehao,p->); if(p-

21、>data.sex) printf(" 男 "); else printf(" 女 "); printf("%-14s%-10sn",p->data .tel,p->data.qq); e=&(p->data);int DeleteElemLinkList(LinkList head,DataType *e) LinkList p,q; int i; int j; p=head; j=1; printf("請輸入要刪除結(jié)點位置:"); scanf("%d",&am

22、p;i); while(p&&(j<i) p=p->next ; j+; if(!p|j<i) printf("錯誤!n");return 0; q=p->next ;e=&q->data ;p->next =q->next ; free(q); return 1; int main() LinkList head; DataType e; int choice; do printf(" 通訊錄管理系統(tǒng)n"); printf("=n"); printf(" 0:退出n"); printf(" 1:建立通訊

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論