資料結構實驗一

2022-09-20 06:09:02 字數 1570 閱讀 1794

實驗一線性表的應用

一、 實驗目的

1、熟悉c語言的上機環境,掌握c語言程式設計工具。

2、掌握線性結構的定義、組織形式、結構特徵和型別說明以及在這兩種儲存方式下實現的插入、刪除和按值查詢的演算法。

3、迴圈鍊錶、雙(迴圈)鍊錶的結構特點和在其上施加的插入、刪除等操作。

二、 實驗內容

joseph問題:設編號為1,2,…,n的n個人圍坐一圈,約定編號為k(1<=k<=n)的人從1開始報數,數到m的那個人出列,他的下一位又從1開始報數,數到m的那個人又出列,…依次類推,直到所有的人出列為止,因此產生乙個出列編號的序列。

編寫程式如下:

# include<>

# include<>

# define len sizeof(struct people)

struct people定義結構體people

;struct people *creat(int n) //建立節點,並按在節點賦值以作為節點序號

void main()

head=p=creat(1給head和p賦初值

for(i=2;i<=num;i根據輸入的num數,建立num個節點

p->next=head將最後乙個節點的next指向head,使煉表成環

for(i=1;i p=p->next;

p1=p將p1指向要開始計數的前乙個節點

printf("結果排序如下:\n");

if(num!=1)

do當num不為1時,p1每向後移一位,j的值增加一位

if(jump==1當junp=1時順序輸出各數

printf("%d\t",p1->next->num);

p1->next=p1->next->next;

j=1;

else

p1=p1->next;

j++;

if(j==jump當j的值等於jump值時,輸出p1指向的下乙個節點的num值,並將p1的下乙個節點跳過,j重新計數

printf("%d\t",p1->next->num);

p1->next=p1->next->next;

j=1;

while(p1->next!=p1當p1指向節點的next等於它本身時,迴圈結束

printf("%d\n",p1->num);}

三、 思考題

1、在程式設計中,分析順序表和煉表的不同的應用場合。

順序表的優點是便於隨機儲存,往往使用一組連續的記憶體,對固定元素的隨機訪問(比如訪問第幾個元素)很方便。因此更適合於存放需要多次修改的資料。

鍊錶優點是便於插入刪除等操作,只要改變指標就行,時間複雜度小,但隨機訪問需要迭代,因此使用範圍和順序表互補。

2、如何改進線性表插入、刪除演算法的效率?

對於資料較少的,選用順序表操作;反之用鍊錶儲存,再執行插入刪除。在兩者間選用效率最高的。若是單獨對順序表或鍊錶改進插入和刪除的效率是無法實現的

四、易犯錯誤及分析

1、在沒有定義結構體的前提下,就使用結構體變數組成鍊錶的結點,應注意基本資料結構的定義。

2、在進行表結點插入或刪除時,指標的錯誤使用,特別需要注意邊界條件的控制。

資料結構上機實驗一

為了更好地幫助同學們做好資料結構實驗,在此給出資料結構上機程式設計的一般思路和程式的基本框架結構。具體程式結構按先後順序可分為以下3個部分 1 預定義常量及型別 對於相關的常量與型別 如狀態型別 進行定義,如 define ok 1 define error 0 define overflow 2 ...

資料結構實驗

資訊23 2120502060 古碧野一 實驗題目 建立乙個線性表,實現線性表的建立,插入,刪除和遍歷 二.實驗目的和要求 實驗目的 熟練掌握線性表的基本操作在順序儲存結構上的實現。實驗要求 用c語言編寫源程式,並除錯通過,測試正確。三.主要儀器裝置 windows xp操作平台,visual c ...

資料結構實驗

一 實驗目的 1 了解二叉樹的定義及基本運算。2 掌握二叉樹的描述方法 特點 性質及儲存結構。3 掌握二叉樹的基本操作演算法。4 自主設計二叉樹建立 遍歷等操作的整個程式。二 實驗內容 根據建立任意給定的二叉樹,並對此二叉樹進行前序 中序 後序 層次四種遍歷。基本要求 1 具有二叉樹的建立功能 2 ...