靜態連結串列
阿新 • • 發佈:2020-11-12
靜態連結串列
#include<iostream> using namespace std; const int N = 1e5+10; int ne[N]; //存放當前節點下標的下一個位置的下標 int e[N]; //存放每個節點的資料 int idx; //儲存當前已經用到了那個節點 int head; //表示頭結點的下標 void Init() { head = -1; idx = 0; } void add_to_head(int x) { e[idx] = x; ne[idx] = head; head = idx ++; //idx++; } //插入到第k個節點後邊 void add(int k,int x) { e[idx] = x; ne[idx] = ne[k]; ne[k] = idx ++; //idx++; } //刪除第k各節點的下一個節點 void remove(int k) { ne[k] = ne[ne[k]]; } int main(void) { int m; cin>>m; Init(); while(m--){ char op[2]; cin>>op; int k,x; if(op[0] =='H'){ cin>>x; add_to_head(x); } else if(op[0] =='D'){ cin>>k; if(!k) head = ne[head]; else remove(k-1); }else{ cin>>k>>x; add(k-1,x); } } for(int i= head;i!=-1;i=ne[i]) cout<<e[i]<<' '; cout<<endl; return 0; }