單鏈表
實現乙個單鏈表,鍊錶初始為空,支援三種操作:
(1) 向煉表頭插入乙個數;
(2) 刪除第k個插入的數後面的數;
(3) 在第k個插入的數後插入乙個數
現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。
注意:題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的時間順序,這n個數依次為:第1個插入的數,第2個插入的數,…第n個插入的數。
輸入:思路:一般傳統鍊錶的物理結構,是由指標把乙個乙個的節點相互連線而成。其特點是按需分配節點,靈活動態增長。但是new乙個節點所需要的時間挺長,所以用陣列模擬在演算法中。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 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之間的邊 無向邊 請輸出每個頂點通過邊相鄰的頂點。輸入...