資料結構 雙向鍊錶總結

2021-09-28 17:18:43 字數 1167 閱讀 9508

#include #include typedef struct line

;//雙向鍊錶的建立

line* initline(line* head)

return head;

}//雙向鍊錶的插入

//插入一半為三種插入,頭插,中間插入,尾插

//頭插 ,只需要將該元素與表頭元素建立雙層邏輯關係即可

line* init_begin(line* head,int data)

else

return head;

}//中間插入,1新節點先與其直接後繼節點建立雙層邏輯關係;

// 2新節點的直接前驅節點與之建立雙層邏輯關係;

line* init_body(line* head,int data,int add)

body->next->prv = temp;

temp->next = body->next;

body->next = temp;

temp->prv = body;

return head;

}//尾插,需要將該元素與表尾元素建立雙層邏輯關係即可

line* init_end(line* head,int data)

if (body->next == null)

return head;

}//節點刪除

line* delline(line* head,int data)

temp = temp->next;

} printf("鍊錶中無該元素");

return head;

}//查詢節點

int findline(line* head,int data)

i++;

t = t->next;

} return -1;

}//更改節點

line* changeline(line* head,int add,int newdata)

temp->data = newdata;

return head;

}//列印

void print(line* head)

else

temp = temp -> next; }}

int main()

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...

資料結構 雙向鍊錶

前幾天寫了乙個單向鍊錶,今天參考自己單向鍊錶改寫了乙個雙向非迴圈鍊錶,下面只討論雙向非迴圈鍊錶。雙向非迴圈鍊錶有如下特點 一 雙向鍊錶每個結點都有乙個前驅指標和後驅指標 當然頭結點和尾結點除外 二 雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。三 頭結點只有後驅指標沒有前驅...

資料結構 雙向鍊錶

單鏈表的單向性 只能從頭結點開始高效訪問鍊錶中的資料元素。單鏈表還存在另乙個缺陷 逆序訪問時候的效率極低。如下 linklistlist for int i 0 i 5 i for int i list.length 1 i 0 i 根據大o推算法可以得出乙個for迴圈的時間複雜度為o n get ...