《資料結構》課程設計報告
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 演算法的時間複...