資源描述:
《《數(shù)據(jù)結(jié)構(gòu)與算法分析》課程設(shè)計(jì):順序表、單鏈表、順序棧、查找、排序算法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、*******大學(xué)《數(shù)據(jù)結(jié)構(gòu)與算法分析》課程設(shè)計(jì)題目:數(shù)據(jù)結(jié)構(gòu)上機(jī)試題學(xué)生姓名:學(xué)號(hào):專業(yè):信息管理與信息系統(tǒng)班級(jí):指導(dǎo)教師:2014年04月目錄一、順序表的操作2【插入操作原理】2【刪除操作原理】2【NO.1代碼】3【運(yùn)行截圖演示】7二、單鏈表的操作10【創(chuàng)建操作原理】10【插入操作原理】10【刪除操作原理】10【NO.2代碼】11【運(yùn)行截圖演示】20三、順序棧的操作25【數(shù)值轉(zhuǎn)換原理】25【NO.3代碼】26【運(yùn)行截圖演示】30四、查找算法32【順序查找原理】32【折半查找原理】32【NO.4代碼】33【運(yùn)行截圖演示】38五、排序算法40【直接插入排序原理】40【快速
2、排序原理】40【NO.5代碼】41【運(yùn)行截圖演示】46一、順序表的操作(1)插入元素操作:將新元素x插入到順序表a中第i個(gè)位置;(2)刪除元素操作:刪除順序表a中第i個(gè)元素。【插入操作原理】線性表的插入操作是指在線性表的第i-1個(gè)數(shù)據(jù)元素和第i個(gè)數(shù)據(jù)元素之間插入一個(gè)新的數(shù)據(jù)元素,就是要是長(zhǎng)度為n的線性表:變成長(zhǎng)度為n+1的線性表:數(shù)據(jù)元素和之間的邏輯關(guān)系發(fā)生了變化。(其【插入原理】在課本P23的算法2.3有解釋)【刪除操作原理】反之,線性表的刪除操作是使長(zhǎng)度為n的線性表:變成長(zhǎng)度為n-1的線性表:數(shù)據(jù)元素、和之間的邏輯關(guān)系發(fā)生變化,為了在存儲(chǔ)結(jié)構(gòu)上放映這個(gè)變化,同樣需要移
3、動(dòng)元素。(其【刪除原理】在課本P24的算法2.4有解釋)【NO.1代碼】#include#defineMAX100typedefintdatatype;typedefstruct{datatypedata[MAX];intlist;}sequenlist;/*順序表*/intmain(){intinsert(sequenlist*L,intx,inti);intdeletee(sequenlist*L,inti);intinput(sequenlist*L);intoutput(sequenlist*L);sequenlists,*p=&s;intind
4、ata,inlocate,deletedx;input(p);printf("請(qǐng)輸入要插入的數(shù):");scanf("%d",&indata);printf("請(qǐng)輸入要插入的位置:");scanf("%d",&inlocate);insert(p,indata,inlocate);printf("插入后的數(shù)據(jù):");output(p);printf("請(qǐng)輸入要?jiǎng)h除的位置:");scanf("%d",&deletedx);deletee(p,deletedx);printf("刪除后的數(shù)據(jù):");output(p);return0;}intoutput(sequenlist*
5、L){inti;for(i=0;i<=L->list;i++)printf("%d",L->data[i]);printf("");return(1);}intinput(sequenlist*L){inti;printf("請(qǐng)輸入原始數(shù)據(jù)個(gè)數(shù):");scanf("%d",&(L->list));L->list--;printf("請(qǐng)輸入原始數(shù)據(jù):");for(i=0;i<=L->list;i++)scanf("%d",&(L->data[i]));printf("原始數(shù)據(jù)為:");output(L);return(1);}intinsert(sequenlist
6、*L,intx,inti){intj;if(((*L).list)>=MAX-1){printf("overflow");return0;}else{if((i<1)
7、
8、(i>((*L).list)+1)){printf("error");return0;}else{for(j=L->list;j>=i-1;j--)L->data[j+1]=L->data[j];L->data[i-1]=x;L->list++;}}return(1);}intdeletee(sequenlist*L,inti)/*定義刪除函數(shù)*/{intj;if((i<1)
9、
10、(i>(L->list
11、)+1)){printf("error");return0;}else{for(j=i;j<=L->list;j++)L->data[j-1]=L->data[j];L->list--;}return(1);}【運(yùn)行截圖演示】①、如下面的運(yùn)行截圖所示,當(dāng)輸入的線性表長(zhǎng)度設(shè)置為12的時(shí)候,該線性表最多能輸入12位數(shù)的長(zhǎng)度。輸入要插入的數(shù)和插入數(shù)的位置下標(biāo),便可以進(jìn)行插入操作;同理當(dāng)輸入要執(zhí)行刪除操作數(shù)的位置下標(biāo),可以將該數(shù)刪除出線性表。②、如下面的運(yùn)行截圖所示,當(dāng)初始設(shè)置的線性表長(zhǎng)度為5的時(shí)候,其5個(gè)數(shù)分別是-3、4、5、0