資料結構 鍊錶儲存 C 實現

2021-10-08 09:23:13 字數 3091 閱讀 6827

演算法基本思想及步驟

1.用陣列分別儲存鍊錶節點的值、next指標、左右指標,定義當前使用的動態節點

2.理解記背單、雙鏈表插入和刪除節點的原理和**操作

3.結合題目套入操作**

題目關鍵點:數形結合,理解單雙鏈表各節點儲存與刪去原理

題目

實現乙個單鏈表,鍊錶初始為空,支援三種操作:

(1) 向煉表頭插入乙個數;

(2) 刪除第k個插入的數後面的數;

(3) 在第k個插入的數後插入乙個數

現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。

注意:題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的時間順序,這n個數依次為:第1個插入的數,第2個插入的數,…第n個插入的數。

輸入格式

第一行包含整數m,表示操作次數。

接下來m行,每行包含乙個操作命令,操作命令可能為以下幾種:

(1) 「h x」,表示向煉表頭插入乙個數x。

(2) 「d k」,表示刪除第k個輸入的數後面的數(當k為0時,表示刪除頭結點)。

(3) 「i k x」,表示在第k個輸入的數後面插入乙個數x(此操作中k均大於0)。

輸出格式

共一行,將整個鍊錶從頭到尾輸出。

資料範圍

1≤m≤100000

所有操作保證合法。

輸入樣例:

10h 9

i 1 1

d 1d 0

h 6i 3 6

i 4 5

i 4 5

i 3 4

d 6輸出樣例:

6 4 6 5

**

#include

using

namespace std;

const

int n =

100010

;// head表示頭結點的下標,e[i]表示節點i的值,ne[i]表示節點i的next指標是,idx儲存當前用到的點

int head, e[n]

, ne[n]

, idx, m;

//初始化

void

init()

// 將x插到頭結點

void

add_to_head

(int x)

// 將x插到下標是k的點後面

void

add(

int k,

int x)

// 將下標是k的點後面的點刪掉

void

remove

(int

- k)

intmain()

else

if(ch ==

'd')

else

}for

(int i = head; i !=-1

; i = ne[i]

) cout << e[i]

<<

' ';

return0;

}

題目

實現乙個雙鏈表,雙鏈表初始為空,支援5種操作:

(1) 在最左側插入乙個數;

(2) 在最右側插入乙個數;

(3) 將第k個插入的數刪除;

(4) 在第k個插入的數左側插入乙個數;

(5) 在第k個插入的數右側插入乙個數

現在要對該鍊錶進行m次操作,進行完所有操作後,從左到右輸出整個鍊錶。

注意:題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的時間順序,這n個數依次為:第1個插入的數,第2個插入的數,…第n個插入的數。

輸入格式

第一行包含整數m,表示操作次數。

接下來m行,每行包含乙個操作命令,操作命令可能為以下幾種:

(1) 「l x」,表示在鍊錶的最左端插入數x。

(2) 「r x」,表示在鍊錶的最右端插入數x。

(3) 「d k」,表示將第k個插入的數刪除。

(4) 「il k x」,表示在第k個插入的數左側插入乙個數。

(5) 「ir k x」,表示在第k個插入的數右側插入乙個數。

輸出格式

共一行,將整個鍊錶從左到右輸出。

資料範圍

1≤m≤100000

所有操作保證合法。

輸入樣例:

10r 7

d 1l 3

il 2 10

d 3il 2 7

l 8r 9

il 4 7

ir 2 2

輸出樣例:

8 7 7 3 2 9

**

#include

using

namespace std;

const

int n =

100010

;int m, l[n]

, r[n]

, e[n]

, idx;

//初始化,0是左端點,1是右端點

void

init()

// 在節點k的右邊插入乙個數x

void

insert

(int k,

int x)

// 刪除節點k

void

remove

(int k)

intmain()

else

if(st ==

"r")

else

if(st ==

"d")

else

if(st ==

"il"

)else

}for

(int i = r[0]

; i !=

1; i = r[i]

) cout << e[i]

<<

' ';

return0;

}

(模板**於acwing使用者yxc)

c 資料結構鍊錶的實現

資料結構中最開始學習實現的就是鍊錶 1 這個標頭檔案 list head 為建立結構體,用來儲存資料 include using namespace std template struct node 建立結構體 template node node template node node type i...

資料結構 鍊錶的實現 C

昨天寫了鍊錶,目前只寫了單鏈表,等有時間把迴圈鍊錶什麼的變異產品再寫出來 只有頭指標 沒有頭結點 的單鏈表 pragma once template struct node template class singlelinkedlist include singlelinkedlist.h temp...

資料結構 C語言鍊錶實現

資料結構 c語言鍊錶實現 目錄 靜態單鏈表實現 動態單鏈表實現 雙向鍊錶實現 迴圈單鏈表 我學資料結構的時候也是感覺很困難,當我學完後我發現了之所以困難時因為我沒有系統的進行學習,而且很多教授都只是注重資料結構思想,而忽略了 方面,為此我寫了這些博文給那些試圖自學資料結構的朋友,希望你們少走彎路 我...