線性表的鏈式表示和實現(鏈式)

2021-08-09 17:02:42 字數 2805 閱讀 6429

課程名:資料結構

實驗目的:

1、掌握線性表的定義;

2、掌握線性表的基本操作,如建立、查詢、插入和刪除等。

實驗要求:定義乙個包含學生資訊(學號,姓名,成績)的順序表和煉表,使其具有如下功能:

(1) 根據指定學生個數,逐個輸入學生資訊;

(2) 逐個顯示學生表中所有學生的相關資訊;

(3) 根據姓名進行查詢,返回此學生的學號和成績;

(4) 根據指定的位置可返回相應的學生資訊(學號,姓名,成績);

(5) 給定乙個學生資訊,插入到表中指定的位置;

(6) 刪除指定位置的學生記錄;

(7) 統計表中學生個數。

實驗題目:線性表的基本操作及其作用

實驗過程:

按照實驗要求編寫相應程式**,並除錯執行。

附:順序表與鍊錶操作的主函式**。

執行演示過程如下(

這部分不需要寫到報告上):

1、 建立乙個學生表(5個學生);

2、 顯示該表中所有的元素;

3、 根據姓名查詢到第3個學生的資訊並顯示;

4、 插入乙個新的學生並顯示全部學生資訊;

5、 刪除第3個學生的資訊並顯示全部學生資訊;

6、 統計學生表中元素的個數(即學生人數);

7、 退出

實驗結果:

能夠順利完成順序表和單鏈表的建立、插入、刪除等操作。

實驗分析:

1、順序表和單鏈表在各種操作實現過程中的差別

2、程式除錯執行中出現的錯誤資訊原因分析。

參考資訊:

definition of structure student

typedef struct student;

definition of sequential list:

typedef  struct sqlist;

definition of linked list

typedef struct lnodelnode,*linklist;  

實驗要求:

(1) 程式要新增適當的注釋,程式的書寫要採用

縮排格式。

(2) 程式要具在一定的健壯性,即當輸入資料非法時,程式也能適當地做出反應,如

插入刪除時指定的位置不對

等等。

(3) 程式要做到介面友好,在程式執行時使用者可以根據相應的提示資訊進行操作。

(4)上傳源程式到課堂派。順序表的源程式儲存為

sqlist.cpp

,鍊錶的源程式儲存為

linklist.cpp。。

鍊錶:

#include #include #include #include #define overflow -1

#define error 2;

#define ok 1

using namespace std;

typedef struct

student;

typedef student elemtype;

typedef struct lnode

lnode,*linklist;

int initlist(linklist &l)

void input(elemtype *e)

void output(elemtype *e)

if(!p||j>i) return error;

e=p->data;

return 1;

} int search(lnode l,char str,linklist &p) // 根據名字查詢

return 2;

} int listinsert(linklist l,int i,elemtype e)

if(!p||j>i-1) return error;

s=(struct lnode*)malloc(sizeof(lnode));

s->data=e;

s->next=p->next;

p->next=s;

return 1;

} int listdelete(linklist p,int i) // 刪除 i位置的學生資訊

if(!(p->next)||(j>i-1)) return error;

linklist q;

q=p->next;

p->next=q->next;

delete q;

return 1;

} int main()

{ linklist p;

elemtype a,b,c,d;

lnode l;

int x;

cout<<"請輸入要錄入學生資訊的人數:"<>x;

for(int i=1;i<=x;i++) {

cout<<"第"<>way;

switch(way)

{ case 1:cout<<"學生資訊如下:"<>name;

if(search(l,name,p))

output(&(p->data));

else

cout<<"查無此人"<>id2;

cout<<"請輸入學生資訊:"<>id3;

if(listdelete(&l,id3)) {

x--;

cout<<"指定位置資訊刪除成功"<

線性表的鏈式表示和實現

標頭檔案 函式的宣告 include include include include typedef int elemtype typedef struct node listnode,linklist listnode鍊錶的結點型別,linklist指向鍊錶結點的指標型別 void initlis...

線性表的鏈式表示和實現

線性表的鏈式表示和實現 include include include exit 等 typedef int status define overflow 2 define error 0 define ok 1 線性表的單鏈表儲存結構 struct lnode typedef lnode link...

線性表的鏈式表示和實現

線性表鏈式儲存結構的特點是 用一組任意的儲存單元儲存線性表的資料元素 這組儲存單元可以是連續的,也可以是不連續的 因此,為了表示每個資料元素ai與其直接後繼資料元素a i 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後續的資訊 即直接後續的儲存位置 這兩部分...