雙鏈表
雙(向)鏈表中有兩條方向不同的鏈
注意
①雙鏈表由頭指針head惟一確定的
②帶頭結點的雙鏈表的某些運算變得方便
③將頭結點和尾結點鏈接起來
①結點結構(見上圖a)
②形式描述
typedef struct dlistnode{
DataType data;
struct dlistnode *prior
}DListNode;
typedef DListNode *DLinkList;
DLinkList head;
由於雙鏈表的對稱性
①雙鏈表的前插操作
void DInsertBefore(DListNode *p
{//在帶頭結點的雙鏈表中
DListNode *s=malloc(sizeof(DListNode));//①
s
s
s
p
p
}
②雙鏈表上刪除結點*p自身的操作
void DDeleteNode(DListNode *p)
{//在帶頭結點的雙鏈表中
p
p
free(p);//③
}
注意
與單鏈表上的插入和刪除操作不同的是
上述兩個算法的時間復雜度均為O(
From:http://tw.wingwit.com/Article/program/sjjg/201311/22874.html