鍊錶的陣列實現

2021-10-17 03:28:40 字數 1319 閱讀 1196

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

(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

所有操作保證合法。

10

h 9i 1

1d 1

d 0h 6

i 36

i 45

i 45

i 34

d 6

646

5

#include

using

namespace std;

const

int n =

1000010

;//head 表示頭節點的下標

//e[i] 表示節點i的值

//ne[i] 表示節點i的next指標是多少

//idx 儲存當前已經用到了哪個點

int head, e[n]

, ne[n]

, idx;

//初始化

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(op ==

'd')

else

}for

(int i = head; i !=-1

; i = ne[i]

)return0;

}

鍊錶的陣列實現

include using namespace std define maxsize 100 鍊錶的陣列實現 typedef struct list,plist plist createemptylist int findlistelement int x,plist pl if i pl last...

陣列實現鍊錶

測試類 public class listtest 再新增元素 list.add 100 list.modify 10,100 取出元素 for int i 0 i list.size i 建立乙個陣列佇列 author 閉耀堯 public class mylist 將心陣列的值賦給初始陣列的最後...

陣列模擬鍊錶的實現

pragma once 原理很簡單,將陣列的元素看成是鍊錶,或者說是陣列空間起到了記憶體池的作用。然後用兩個結點表示 當前使用 空閒的鍊錶 對效率問題上的一些說明 增 這個無需說,鍊錶直接秒殺。刪 類裡提供的是乙個element結構,裡面包含了使用者的資料。如果你想保持常量的效率 在一些資料介面提供...