C 連結串列中插入結點引數的問題

時間 2022-03-12 02:10:17

1樓:難得當歌對酒時

插入的節點有可能是連結串列新的首節點,故此時需要改變表首指標的值,故傳遞引數時要傳遞其引用(node* &),或其指標(node* *) 。

2樓:匿名使用者

int a = 0;

int &b=a;

b=3;

這時a的結果也是3,你可以試試。&表示引用,即變數的一個別名。對於函式引數,它相當於引數的地址傳遞。

接著上邊;

int e =1;

int *c = &a;

int *&d=c;

這時c指向變數e,而不是a。自己思考一下吧

3樓:

以前做過的實驗報告,應該很全,全給你了

1、線性錶鏈式儲存結構及基本操作演算法實現

[實現提示] (同時可參見教材p64-p73頁的adt描述及演算法實現及ppt)函式、類名稱等可自定義,部分變數**上學號後3位。也可自行對類中所定義的操作進行擴充套件。

所載入的庫函式或常量定義:

(1)單連結串列儲存結構類的定義:

template

class linklist

;(2)初始化帶頭結點空單連結串列建構函式實現

輸入:無

前置條件:無

動作:初始化一個帶頭結點的空連結串列

輸出:無

後置條件:頭指標指向頭結點。

template

linklist:: linklist( )//不帶引數的建構函式

(3)利用陣列初始化帶頭結點的單連結串列建構函式實現

輸入:已儲存資料的陣列及陣列中元素的個數

前置條件:無

動作:利用頭插或尾插法建立帶頭結點的單連結串列

輸出:無

後置條件:頭指標指向頭結點,且陣列中的元素為連結串列中各結點的資料成員。

template

linklist:: linklist(datatype a[ ], int n)//帶引數的建構函式,尾插法

}(4)在帶頭結點單連結串列的第i個位置前插入元素e演算法

輸入:插入位置i,待插入元素e

前置條件:i的值要合法

動作:在帶頭結點的單連結串列中第i個位置之前插入元素e

輸出:無

後置條件:單連結串列中增加了一個結點

template

void linklist::insert(int i, datatype e)

//找插入點

if (!p) throw "i不合法!";

else

}(5)在帶頭結點單連結串列中刪除第i個元素演算法

輸入:刪除第i個結點,待存放刪除結點值變數e

前置條件:單連結串列不空,i的值要合法

動作:在帶頭結點的單連結串列中刪除第i個結點,並返回該結點的值(由e傳出)。

輸出:無

後置條件:單連結串列中減少了一個結點

template

datatype linklist::delete(int i)

//找到第i-1個結點

if (!p | | !p->next)

throw 「i不合法」;

else

}(6)遍歷單連結串列元素演算法

輸入:無

前置條件:單連結串列不空

動作:遍歷輸出單連結串列中的各元素。

輸出:無

後置條件:無

template

void linklist::printlist( )

}(7)求單連結串列表長演算法。

輸入:無

前置條件:無

動作:求單連結串列中元素個數。

輸出:返回元素個數

後置條件:無

template

int linklist::length( )

return i;

}(8)判單連結串列表空演算法

輸入:無

前置條件:無

動作:判表是否為空。

輸出:為空時返回1,不為空時返回0

後置條件:無

template

int linklist::isempty(void)const

(9)獲得單連結串列中第i個結點的值演算法

輸入:無

前置條件:i不空,i合法

動作:找到第i個結點。

輸出:返回第i個結點的元素值。

後置條件:無

template

datatype linklist::get(int i)

if (!p) throw 「i值不合法,超過了元素的個數!";

else return p->data;

}(10)刪除連結串列中所有結點演算法(這裡不是解構函式,但功能相同)

輸入:無

前置條件:單連結串列存在

動作:清除單連結串列中所有的結點。

輸出:無

後置條件:頭指標指向空

template

void linklist:: freelist()//釋放單連結串列

delete head;

}(11)上機實現以上基本操作,寫出main()程式:

參考p72

#include

#include "linklist.cpp"

void main()

r->next=head; //單連結串列建立完畢,將終端結點的指標域指向頭結點

}(2)在帶頭結點單迴圈連結串列的第i個位置前插入元素e演算法

輸入:插入位置i,待插入元素e

前置條件:i的值要合法

動作:在帶頭結點的單迴圈連結串列中第i個位置之前插入元素e

輸出:無

後置條件:單迴圈連結串列中增加了一個結點

template

void cirlinklist::insert(int i, t e)

if (j!=i-1) throw "i不合法";

else

}(3)在帶頭結點單迴圈連結串列中刪除第i個元素演算法

輸入:刪除第i個結點,待存放刪除結點值變數e

前置條件:單迴圈連結串列不空,i的值要合法

動作:在帶頭結點的單迴圈連結串列中刪除第i個結點,並返回該結點的值(由e傳出)。

輸出:無

後置條件:單迴圈連結串列中減少了一個結點

template

t cirlinklist::delete(int i)

if (j!=i-1) throw "i不合法"; //結點p不存在或結點p的後繼結點不存在

else

}(4)遍歷單迴圈連結串列元素演算法

輸入:無

前置條件:單迴圈連結串列不空

動作:遍歷輸出單迴圈連結串列中的各元素。

輸出:無

後置條件:無

template

void cirlinklist::printlist( )

}(5)上機實現以上基本操作,寫出main()程式:

#include

#include "cirlinklist.cpp"

void main( )

else

}pc->next = pa?pa:pb ; //剩餘

delete lb.head; //釋放頭結點

}main()

貼上測試資料及執行結果:

已知head指向帶頭結點的單向連結串列,連結串列中每個結點包含字元型資料域(data)和指標域(next)。請編寫函

千里 已知head指向一個帶頭結點的單向連結串列連結串列中每個結點包含字元型資料域data和指標域next。請編寫函式實現連結串列的逆置。 光之琉璃影之殤 include include typedef struct node node,pnode pnode create void void ou...

C 連結串列的問題!c 中連結串列的使用技巧和作用

小樣簡直就跟在ata培訓一樣。這是我以前寫的連結串列。using system using using namespace 雜湊。public list object data1,object data2 list head new list list end null public hashlis...

C語言中連結串列中的結構體指標變數問題求教

定義結構體指標變數時,只分配儲存指標型別需要的空間,比如listnode p 這裡p有給他分配儲存指標的4個位元組的空間。實際上你是要讓p指向一個結構體空間的,這個結構體空間在哪?可以先定義listnode a 然後 p a 這時p指向一個之前申請分配過空間 編譯器設定過其地址和大小,在棧空間存放著...