資料結構作業

2021-03-04 09:56:13 字數 2880 閱讀 8984

《資料結構》課程設計報告

2014-2015學年第一學期

課程設計題目

設計學生姓名

所在系部名稱: 計算機工程系

所在班級名稱:電腦科學2013()

參加設計時間

課程設計課時: 30

指導教師姓名

年月日第一題目:

假設有兩個集合 a 和 b 分別用兩個線性表 la 和 lb 表示,即線性表中的資料元素即為集合中的成員。現要求乙個新的集合c=a∪b。

演算法思想:

先初始化線性表lc,將la的所有元素複製到lc中,然後掃瞄線性表lb,若lb的當前元素不**性表la中,則將其插入到lc中。

void unionlist(list la, listb, list &lc)

lena=listlength(la);/*求線性表的長度*/

lenb=listlength(lb);

for(i=1,i<=lenb;i++)

} 依次掃瞄順序表a和bd的元素,比較當前元素的值,將較小值的元素賦給c,重複,直到乙個線性表掃瞄完畢,然後將未完的那個順序表中餘下部分賦給c。順序表c的容量要能夠容納a、b兩個順序表相加的長度。

#include

#define datatype int

#define maxsize 100

typedef struct

seqlist;

seqlist *init_seqlist()

}void merge(seqlist a,seqlist b,seqlist *c)

else

while(i<=a.last)

while(j<=b.last)

c->last=k-1;

}void main()

printf("\n請輸出線性表a的各元素值:\n");

for(j=0;j<=a.last;j++)

printf("%6d",a.data[j]);

printf("\n請輸入線性表b的長度:");

scanf("%d",&r);

b.last = r-1;

printf("請輸入線性表b的各元素值:\n");

for(i=0; i<=b.last; i++)

printf("\n請輸出線性表b的各元素值:\n");

for(j=0;j<=b.last;j++)

printf("%6d",b.data[j]);

c=init_seqlist();

merge(a,b,c);

printf("\n合併後線性表c的各元素值:\n");

for(k=0;k<=c->last;k++)

printf("\n");

} 1)設乙個移動指標p和計數器i,p所指結點後面若還有結點,p向後移動,計數器家1。

(2)從鍊錶的第乙個元素結點開始,判斷當前結點值是否等於x。若是,返回該結點的指標,否則繼續後乙個,直到鍊錶結束為止。找不到時返回空指標。

(3)第一步:查詢第i-1個結點,若存在,繼續第二步,否則結束。第二步:申請、填裝新結點。;第三步:將新結點插入,結束。

(4)第一步:查詢第i-1個結點,若存在,繼續第二步,否則結束;第二步:若存在第i個結點則繼續第三步,否則結束;第三步:刪除第i個結點,結束。

#include "***mon.h"

#include "linklist.h"

//求單鏈表的長度----取單鏈表的第i個資料元素---對單鏈表進行插入操作--對單鏈表進行刪除操作

void init_linklist(linklist *l)/*對單鏈表進行初始化*/

void createfromhead(linklist l)

else

flag=0;

}}int listlength(linklist l)

/*求帶頭結點的單鏈表l的長度*/

return j; /*j為求得的單鏈表長度*/

} node *get_linklist(linklist l,int i)

if(p!=null)

return(p);

else

return(0);

}void print(linklist l)

}int insert_linklist(linklist l,int i,int x)

}int del_linklist(linklist l,int i)

}}void main()

{ linklist l;

node *q;

int length,location,insertlocation,insertvalue,deleteposition;

int length1;

init_linklist(&l);

printf("\n用頭插法建立單鏈表,請輸入鍊錶資料,以0結束!\n");

createfromhead(l);

printf("帶頭結點的單鏈表l為:");

print(l);

length=listlength(l);

printf("\n帶頭結點的單鏈表l的長度為:%4d\n",length);

printf("要查詢單鏈表l的位置為:");

scanf("%d",&location);

q=get_linklist(l,location);

printf("要查詢單鏈表l的元素為:%3d\n",q->data);

//插入操作

printf("要插入單鏈表l的位置為:");

scanf("%d",&insertlocation);

printf("要插入單鏈表l的元素值為:");

scanf("%d",&insertvalue);

《資料結構》作業

本課程作業由兩部分組成。第一部分為 客觀題部分 由選擇題組成,每題1分,共15分。第二部分為 主觀題部分 由簡答題和應用題組成,共15分。作業總分30分,將作為平時成績記入課程總成績。客觀題部分 一 選擇題 每題1分,共10題 1 順序儲存結構中資料元素之間的邏輯關係是由 表示的。a.線性結構 b....

資料結構作業

1 將順序表逆置,要求用最少的附加空間。2 從鍵盤讀入n個整數 公升序 請編寫演算法實現 1 createlist 建立帶表頭結點的單鏈表 include stdio.h typedef struct lnode定義結構體 int data struct lnode next lnode,linkl...

資料結構作業答案

第一章單選題1 下列關於演算法的基本特徵,說法不正確的是 能行性是演算法中的每乙個步驟必須能夠實現且能達到預期的目的。演算法的確定性是指演算法中的每乙個步驟必須是有明確的定義,不允許模稜兩可。演算法的有窮性是指演算法必須能在有限的時間內做完。演算法與提供情報無關。d 教師批改 d 2 演算法的時間複...