實驗二 單鏈表的實現

2021-06-12 13:43:45 字數 2527 閱讀 5736

實驗二   單鏈表的實現

一、   實驗目的

1. 掌握線性表的鏈結儲存結構;

2. 驗證單鏈表及其基本操作的實現;

3. 進一步掌握資料結構及演算法的程式實現的基本方法。

二、   實驗內容。 1.

根據課件關於單鏈表的定義,實現帶頭結點的單鏈表; 2.

用頭插法(或尾插法)建立帶頭結點的單鏈表;

3.實現基本線性表的就地逆置reverse()方法,也就是將基本線性表中的資料元素交換位置排列,新的序列與原來的順序正好相反,比如原來序列「abcdef」,倒置後變為「fedcba」。

[提示]:把乙個單鏈表斷開為兩個單鏈表,其中乙個由first指標指向,只包含乙個頭結點成為乙個空表,另乙個單鏈表由p指標指向,成為乙個不帶頭結點單鏈表,接下來從p單鏈表中取出第乙個元素插入first鍊錶的頭部,直到p指向空為止。

4.用單鏈表儲存學生**,測試資料如下: 5.

a、建立空表,判斷表是否空

b、按順序插入資料001 張三2005 70

002 李四2004 65

c、張三之後插入003 王五2005 80

張三之前插入004 馬六2006 90

李四之後插入005 黃榮2004 85

d、刪除第一條記錄

刪除最後一條記錄

e、查詢黃榮是否在表中,在則列印「存在記錄:005 黃榮2004

85」,否則列印「不存在」

查詢郭清是否在表中,列印相應結果

f、列印**記錄數,

g、列印整個**

三、   實驗環境

1.pc

機,windowsxp作業系統

2.vc++6.0軟體

四、   回答問題

1. 雙鏈表插入乙個結點p的操作步驟是什麼?

if(d==0)

else

2. 雙鏈表的刪除乙個結點p的操作的步驟是什麼?

if(current==null)returnfalse;

current->rlink->llink=current->llink;

current->llink->rlink=current->rlink;

x=current->data;deletecurrent;

#include

using namespace std; 

template

structlinknode

linknode(constt&item,linknode*ptr=null) };

template

class  list

list(const t& x)

list(list&l);

~list()

void makeempty();

int length()const;

linknode*gethead()const

linknode*seartch(t x);

linknode*locate(int i);

bool getdata(int i ,t& x)const;

void setdata(int i,t& x);

void insert(t endtag);

bool remove(int i,t& x);

bool isempty()const

bool isfull()const

void input();

void output();

linknode*reverse();

void move();

protected:

linknode*first;

}; 

template

list::list(list&l)

destptr->link=null; }

template

voidlist::makeempty() }

template

intlist::length()const

return count;}

template

linknode*list::seartch(t x)

template

linknode*list::locate(int i)

returncurrent; }

template

voidlist::setdata(int i,t& x)

template

voidlist::insert(t endtag)

last->link=null;}

template

linknode*list::reverse() */

linknode*p,*v1,*v2;  

v2=first;  

v1=null;  

while(  v2!=null   )  

while(v1!=null)

return  v1;  

}template

voidlist::output() }

voidmain()

實驗二 單鏈表的實現

建立乙個由 n個學生成績的單鏈表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。二 實驗過程 ifndef linllist h define linklist h template struct node template class ...

單鏈表實驗

實驗報 告 實驗一 單鏈表及其應用 一 實驗目的 1 掌握線性表的鏈結儲存結構 2 驗證單鏈表及其基本操作的實現 3 進一步理解演算法與程式的關係,能夠將單鏈表演算法轉換為對應的程式。二 實驗內容 1 用頭插法 或尾插法 建立帶頭結點的單鏈表 2 用已建立的單鏈表實現插入 刪除 查詢等基本操作。三 ...

資料結構實驗二 單鏈表的基本實現

資料結構實驗 實驗二 單鏈表 2學時 1.設計實驗 設計演算法,實現線性結構上的單鏈表的產生以及元素的查詢 插入與刪除。1 4題必做,5 8題選做 具體實現要求 1 用正位序的方法,建立乙個由13個整數構成的帶頭結點的單鏈表。建議13個整數由鍵盤輸入。2 從鍵盤輸入1個整數,在單鏈表中查詢該結點的位...