資料結構實驗報告一

2021-04-20 22:17:53 字數 1711 閱讀 3756

學院: 計算機學院

專業: 電腦科學與技術

指導教師朱戰立

班級學號: 計1201 201207010117

姓名杜曉燕

題目:單迴圈鍊錶

問題描述:設計乙個單迴圈鍊錶並對其進行簡單的刪除插入操作。

基本要求:

(1)設計單迴圈鍊錶的操作,包括初始化、求元素個數、插入、刪除等。

(2)設計輸出單迴圈鍊錶中所有資料元素的輸出函式。

(3)設計乙個測試主函式。其中資料元素的型別任意。

測試資料:依次輸入1,2,3,4,5,6,7,8,9,10,求鍊錶元素個數,刪除5,再依次輸出資料元素。

演算法思想:主函式主要是在帶頭結點的迴圈單鏈表中(1)求元素個數,其主要思想是再迴圈前,指標變數p指向頭結點,計數變數i=0;迴圈結束的條件為p->next=head,迴圈中,每次讓指標p指向p->next,讓計數變數i加1;最終返回計數值i。(2)刪除第i個結點,其主要思想是在迴圈單鏈表中尋找到第i-1個結點並由指標p指示,然後讓指標s指向a[i]結點,並把資料元素a[i]的值賦給x,最後把a[i]結點脫鏈,並動態釋放a[i]結點的儲存空間。

模組劃分:

(1)操作實現包括:結點結構體定義、初始化操作、求當前資料個數、插入乙個結點操作、刪除乙個結點操作以及取資料元素操作;

(2)實現檔案包含主函式voidmain(void),其功能是測試所設計的迴圈單鏈表的正確性。

資料結構:

鍊錶中的結點的結構體定義如下:

typedef struct node

slnode;

源程式:

#include

#include

typedef int datatype;

typedef struct node

slnode;

void listinitiate(slnode **head)

int listlength(slnode*head)

int listinsert(slnode*head,int i,datatype x)

if(j!=i-1)

q=( slnode*)malloc(sizeof(slnode));

q->data=x;

q->next=p->next;

p->next=q;

return 1;}

int listdelete(slnode*head,int i,datatype *x)

if(j!=i-1)

s=p->next;

*x=s->data;

p->next=p->next->next;

free(s);

return 1;}

int listget(slnode*head,int i,datatype *x)

if(j!=i)

*x=p->data;

return 1}

void main(void)

printf("\n");

listlength(head);

printf("%d \n",i);

listdelete(head, 4, &x刪除資料元素5*/

for(i = 0; i < listlength(head); i++)

}測試情況:

(1)程式執行結果為:

(2)測試結果分析:

程式執行結果與**完全相同,說明設計的單迴圈鍊錶是正確的。

資料結構實驗報告

實驗報告 實驗課程 資料結構 實驗專案實驗 專業 電腦科學與技術 姓名於凡 學號 10703070328 指導教師汪林林 實驗時間 2008 12 7 重慶工學院計算機學院 實驗一線性表 1.實驗要求 掌握資料結構中線性表的基本概念。熟練掌握線性表的基本操作 建立 插入 刪除 查詢 輸出 求長度及合...

資料結構實驗報告

實驗一線性表的基本操作 1 實驗目的2 2 實驗環境2 3 實驗內容,主要 除錯與執行 2 4 總結14 實驗二棧的基本操作 1 實驗目的15 2 實驗環境15 3 實驗內容,主要 除錯與執行 15 4 總結18 實驗三赫夫曼樹 1 實驗目的18 2 實驗環境18 3 實驗內容,主要 除錯與執行 1...

資料結構實驗報告

實驗題目 計算機與通訊工程學院 2014 實驗一線性表的應用 實驗目的 1 掌握線性表的邏輯結構定義 2 掌握線性表的兩種儲存結構 順序和鏈式 3 掌握順序表和煉表的定義及基本操作 實驗內容 通過程式設計完成具有一定實際意義的課題,加深對線性表應用的理解和掌握。參考題目如下所示。學生可在完成以下題目...