template struct node;
template class doublelist;
對於無參建構函式,只需建乙個頭結點,令其左右指標分別為空即可
template linklist::doublelink()
template linklist::doublelink(t a,int n)
}
template linklist::doublelink(t a,int n)
r->rlink=null;
}
對於析構函式,與單鏈表的析構函式相同,僅需使用右指標 rlink 不斷指向下一結點,釋放儲存空間即可
template doublelink::~doublelink()
}
在雙向鍊錶中插入乙個結點,對指標的操作順序有很多,但由於雙向鍊錶實質上可看作兩條反向的單鏈表,所以插入操作的核心是:先處理每個方向的遠端指標,再處理近端指標原則上,插入乙個結點需要連線 4 個指標,但考慮插入時的特殊情況,即在空表或表尾插入乙個結點時,新結點的右指標指向為空,此時只需連線 3 個指標
void doublelist:: insertelement(t x)
對於刪除操作,其與插入操作相似,在刪除時需要判斷是否為表尾結點
delete p;//釋放空間
return true;//刪除成功
}p=p->rlink;
}return false;//刪除失敗
}
int doublelist::void sort(int len)
p=p->rlink;//指向下一結點}}
}
雙鏈表的遍歷輸出,與單鏈表相同,僅需使用右指標 rlink 不斷指向下一結點,輸出資料域即可
template void doublelink::print()
}
理論基礎 線性表 順序表
const int maxsize 100 儲存空間初始分配量 template class seqlist 析構函式空 int getlength 獲取順序表的長度 t getelement int i 獲取順序表的第i個元素 int getposition t x 獲取順序表中值為x的元素序號 ...
線性表 雙向鍊錶
雙向鍊錶是一種特殊的鍊錶。單鏈表和雙向鍊錶的區別 單鏈表 只能向乙個方向遍歷 雙向鍊錶 向兩邊都可以遍歷。雙向鍊錶的實現 為了找到節點和前驅,我們給節點增加乙個指向其前驅的指標,如下圖所示 既然單鏈表可以迴圈,那麼雙向鍊錶也就可以迴圈,如下圖所示即為雙向迴圈鍊錶 建立雙向鍊錶和建立單鏈表大同小異,雙...
線性表之雙向鍊錶
include include define error 0 define ok 1 typedef int status typedef int elemtype typedef struct dulnodedulnode,dulinklist 雙向鍊錶的結構體 兩個指標,分別指向前乙個和後乙個節...