單鏈表 資料結構

2022-08-31 00:27:17 字數 2572 閱讀 6206

線性表:n個資料元素的有限序列。一般指邏輯結構上的線性結構。當n=0時為空表。——棧、佇列、串。

線性表的特點:

1)對於同一線性表的各資料元素必定具有相同的資料型別和長度;

2)資料元素之間的相對位置是線性的。

鍊錶(linked list)

:鏈結方式儲存的線性表。

1)用一組任意的儲存單元來存放線性表的結點;

2)在儲存每個結點值的同時,必須儲存指示其後繼結點的位址。

單鏈表(single linked list):每個結點只有乙個鏈域的鍊錶。

資料域:儲存資料元素資訊的域。

指標域:儲存直接後繼儲存位置的域。

由於開始結點無前驅,故設頭指標head指向開始結點。

終端結點無後繼,故終端結點的指標域為空,即null。

在單鏈表中,取得第i個資料元素必須從頭指標出發尋找,因此,單鏈表是非隨機訪問的儲存結構。

在單鏈表的第乙個結點之前附設乙個結點,稱為頭結點。頭結點的指標域儲存指向第乙個結點的指標。 

/*

*位置約定:第m個,以0開始計數。

*位置為m,以1開始計數 */

#include

#include

/*鍊錶節點

*/struct

node;/*

反轉單鏈表,分別用3個指標,指向前乙個,當前,下乙個

* 修改煉表頭(指標),要用指標的指標

* 通過函式的方式修改指標,要用指標的指標 */

static

void reverse(struct node**head_ref)

*head_ref =prev;

}

//使用遞迴的方法

static

struct node* reverserecall(struct node*head)

//新增資料,頭部插入

void push(struct node** head_ref, int

new_data)

//列印鍊錶

void printlist(struct node*head)

}int length(struct node*head)

returnn;}

void removehead(struct node**head_ref)

*head_ref = (*head_ref)->next;}/*

不知道節點數n,只遍歷一次就求出中間節點

*q:當單鏈表長度為0時,報錯 */

void searchmid(struct node* head, struct node**mid)

*mid =p1;}/*

method1: 找出鍊錶倒數第m個元素

*當m=0時,返回鍊錶最後乙個元素

*先求出鍊錶的總長度len,然後順序變數求出位置在len-m的元素 */

node* searchlastmelement1(struct node* head, int

m)/*

method2: 找出鍊錶倒數第m個元素

*當m=0時,返回鍊錶最後乙個元素

*當前位置指標p,指向第m個元素的指標pm,

*確保兩個指標之間相差m個元素,然後以同樣的速度移動它們

*當pm到達鍊錶末尾時,p指標就是指向倒數第m個元素了 */

node* searchlastmelement2(struct node* head, int

m)

while(pm->next != null) //

同樣的速度移動指標p和pm

returnp;}

intmain()

輸出:

80 100 60 85 15 4 20

******************************

reversed linked list

20 4 15 85 60 100 80

******************************

reverserecall linked list

80 100 60 85 15 4 20

******************************

length of linked list: 7

******************************

removehead test:

100 60 85 15 4 20

******************************

searchmid test: 85

******************************

searchlastmelement2 test: the last 5 element is 100

******************************

searchlastmelement2 test: the last 5 element is 100

資料結構單鏈表

初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!2012年3月30日 於大連 include using namespace std typedef struct node linklist,node linklist makelist int n void ...

資料結構 單鏈表

今天浪費了好多時間,也許是心裡想著明天的考試吧 可自己也知道這次的考試,自己畢竟過不了了,只好等到今年11月份,想想那時自己已經大三了 還有那麼多時間嗎!很懊惱今天不知怎麼回事,感嘆環境真的可以影響乙個人,真的可以 把今天的學習筆記寫下來,沒有進行好好的整理,這回單鏈表的功能較多,操作比較散,最後乙...

資料結構 單鏈表

實現乙個單鏈表 1 查詢 查詢第index個節點 查詢指定的元素 2 插入 將指定的元素插入到第index個節點上 3 刪除 將第index個節點刪除 規律 刪除和新增元素前務必儲存兩個元素的位址引用資訊 public class mylinkedlist 記錄鍊錶結構的頭結點位址引用 privat...