#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 ...