1. 程式人生 > 其它 >單鏈表及雙鏈表

單鏈表及雙鏈表

連結串列

單鏈表 多個單鏈表構成鄰接表 :應用:儲存圖,儲存樹

雙鏈表 應用:優化某些題

1.單鏈表:
//說實話,這個真的不難,前提是想好插入和刪除一條鏈的方法

用陣列模擬:
1.定義每個節點的val

e[n]定義當前點
ne[n] 定義下一個節點的位置

空節點下標用-1表示

#include<iostream>
using namespace std;
const int N=100010;
//head 表示頭結點的下標
//e[i] 表示節點i的值
//ne[i] 表示節點i的next指標是多少
//idx儲存當前已經用到了哪個點
 
void init(){
    head=-1;
    idx=0;
}

void add_to_head(int x){
    e[idx]=x;
    ne[idx]=head;
    head=idx++;
}
//將x插到頭節點

void add(int x,int k){
    e[idx]=x;
    ne[idx]=ne[k];
    ne[k]=idx++;
}
//將x插到k的後面

void remove(int k){
    ne[k]=ne[ne[k]];
}
//刪除k後面的數

int main(){
    int m;
    cin>>m;
    while(m--){
        char op;
        int k,x;
        cin>>op;
        if(op=='H') cin>>x,add_to_head(x);
        else
            if(op=='D') cin>>k,remove(k);
        else cin>>k>>x,add(k,x);
    }
    for(int i=head&&i!=-1;i=ne[i]){
        cout<</iostream>