實現乙個單鏈表,鍊錶初始為空,支援三種操作:
(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=
1e5+10;
int n,ne[n]
,e[n]
,idx,head;
void
add_head
(int x)
void
add(
int k,
int x)
void
remove
(int x)
intmain()
else
if(c==
'i')
else
}for
(int i=head;i!=-1
;i=ne[i]
) cout<<<
" ";
return0;
}
單鏈表 模板類
include using namespace std 宣告單鏈錶類模板 為了說明友元類 template class list 定義鍊錶結點類模板 template class listnode listnode type item data item next null public 成員函式 ...
單鏈表模板類
鍊錶是最基本的資料結構,是一組不連續的資料的集合,鍊錶中每個結點除包含結點元素外,還包含下一結點的位址。對鍊錶可以實現插入 刪除 查詢以及顯示等操作。單鏈表模板類list.h ifndef list h define list h include using namespace std templa...
單鏈表模板類
在單鏈表中必然需要定義乙個頭節點來指向鍊錶的第乙個元素,struct node public object mutable node m header 這樣直接定義會有乙個問題,頭節點的構造會呼叫t類的建構函式,這顯然時不需要的,解決方案如下 mutable struct public object...