陣列模擬鍊錶

2021-10-24 15:59:05 字數 1463 閱讀 6570

單鏈表

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

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

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

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

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

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

輸入:

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

思路:一般傳統鍊錶的物理結構,是由指標把乙個乙個的節點相互連線而成。其特點是按需分配節點,靈活動態增長。但是new乙個節點所需要的時間挺長,所以用陣列模擬在演算法中。

#include

using namespace std;

const

int n =

1e5+10;

int e[n]

,ne[n]

,idx,head;

//e[i] :節點i的data值,ne[i]:節點i的next指標,idx:當前有多少節點,head頭結點指標

int n;

//操作的次數

void

init()

;//初始化

void

addtohead

(int x)

;//頭部插入x

void

remove

(int k)

;//刪除第k個插入的數後面的數;換**話就是刪除下標為k-1的點的後面的乙個數

void

insert

(int k,

int x)

;int

main()

if(c ==

'i')

if(c ==

'd')

}for

(int i = head; i !=-1

; i = ne[i]

) cout << e[i]

<<

' ';

cout << endl;

return0;

}void

init()

//頭部插入x

void

addtohead

(int x)

//刪除第k個插入的數後面的數;換**話就是刪除下標為k-1的點的後面的乙個數

void

remove

(int k)

void

insert

(int k,

int x)

陣列模擬鍊錶

單鏈表 include using namespace std int head 1 idx 0,e 100005 ne 100005 void add head int x void remove int k void add int k,int x intmain else if a d 刪除元...

陣列模擬鍊錶(靜態鍊錶)

為了模擬鍊錶的操作,設定了乙個date 資料 以及cur 相當於指標域 typedef struct list list s size size為陣列大小 我們用s size 1 cur來起頭指標的作用,指向鍊錶的第乙個元素的下標。因為不能直接malloc出來乙個空間,需要s 0 來儲存乙個空的陣列...

陣列模擬鍊錶問題

模擬鍊錶。在圖論題程式設計中,通常要運用鄰接鍊錶資料結構。由於動態指標比靜態的陣列的訪問慢,很多oi選手就用陣列模擬指標。現在就來學習一下這種方法的程式設計。有n個點,編號從1到n。有m條邊,每條邊用連線的2個頂點表示,如 3,8 表示頂點3和8之間的邊 無向邊 請輸出每個頂點通過邊相鄰的頂點。輸入...