一、實驗目的
(1) 掌握單鏈表的概念及實現方式。
(2) 掌握單鏈表的儲存結構及主要運算,如建立、查詢、插入、刪除等。
二、實驗環境
windows 10,microsoft visual c++ 2010 express
三、實驗內容
1、內容描述
定義乙個包含學生資訊(學號,姓名,成績)的鍊錶,使其具有如下功能:
(1) 根據指定學生個數,逐個輸入學生資訊;
(2) 逐個顯示學生表中所有學生的相關資訊;
(3) 根據姓名進行查詢,返回此學生的學號和成績;
(4) 根據指定的位置可返回相應的學生資訊(學號,姓名,成績);
(5) 給定乙個學生資訊,插入到表中指定的位置;
(6) 刪除指定位置的學生記錄。
2、實現**
#include
#include
#include
typedef
struct
student;
typedef
struct lnodelnode,
*linklist;
bool initlist
(linklist &l)
return true;
}bool displist
(linklist l)
linklist p;
p=l;
while
(p->next!=
null
)return true;
}bool deletelist
(linklist &l)
int i,j=0;
linklist p,q;
p=l;
printf
("輸入刪除的位置序號:");
scanf
("%d"
,&i)
;while
((p->next!=
null)&&
(j)if(!
(p->next!=
null)||
(j>i-1)
) q=p->next;
p->next=q->next;
delete q;
return true;
}bool inserlist
(linklist &l)
int i,j=0;
linklist p;
p=l;
printf
("輸入插入的位置序號:");
scanf
("%d"
,&i)
;while
(p&&
(j)if
(!p||j>i-1)
linklist s;
s=new lnode;
printf
("輸入插入的學生資訊,按「學號 姓名 成績」輸入\n");
scanf
("%s %s %d"
,&s->data.no,
&s->data.name,
&s->data.mark)
; s->next=p->next;
p->next=s;
return true;
}bool seeklist
(linklist l)
lnode *p;
p=l;
printf
("輸入查詢的姓名:");
scanf
("%s"
,na)
;while
(p->next!=
null)}
if(!flag)
printf
("未找到相關資訊!\n");
return true;
}bool seek2list
(linklist l)
lnode *p;
p=l;
printf
("輸入查詢的序號:");
scanf
("%d"
,&num)
;for
(int i=
0;p!=
null
&&i(p==
null
)printf
("學號:%s 姓名:%s 成績:%d\n"
,p->data.no,p->data.name,p->data.mark)
;return true;
}void
main()
}}
四、實驗體會
通過本次實驗,我掌握了定義線性表的鏈式儲存型別,加深了對鏈式儲存結構的理解,進一步鞏固和理解了單鏈表的基本操作,例如建立、查詢、插入和刪除等等。同時,也體會到了鍊錶在插入、刪除操作中的優點及鍊錶中新增頭結點的優點:便於首元結點的處理以及空表和非空表的統一處理。
資料結構實驗報告 資料結構實驗報告
使用c語言中的陣列,實現線性表中的順序結構儲存的查詢 刪除操作。1 初始線性表通過陣列 迴圈 scanf語句實現輸入任意個整數。2 刪除操作的實現,任意輸入乙個要刪除的整數,找到這個元素,將此元素之後的所有元素逐個前移一位,實現刪除操作。3 要求以上2步操作可以重複執行。4 例如 刪除操作執行結果大...
資料結構實驗報告
1 掌握佇列儲存結構的表示和實現方法。2 掌握佇列的入隊和出隊等基本操作的演算法實現。3 了解佇列在解決實際問題中的簡單應用。1 建立順序迴圈佇列,並在順序迴圈佇列上實現入隊 出隊基本操作 驗證性內容 2 建立迴圈鏈佇列,並在迴圈鏈佇列上實現入隊 出隊基本操作 設計性內容 3 實現鍵盤輸入迴圈緩衝區...
資料結構實驗報告
1 理解二叉樹的型別定義與性質。2 掌握二叉樹的二叉鍊錶儲存結構的表示和實現方法。3 掌握二叉樹遍歷操作的演算法實現。4 熟悉二叉樹遍歷操作的應用。1 建立二叉樹的二叉鍊錶儲存結構。2 實現二叉樹的先序 中序和後序三種遍歷操作 驗證性內容 3 應用二叉樹的遍歷操作來實現判斷兩棵二叉樹是否相等的操作 ...