理論基礎 線性表 雙向鍊錶

2021-09-12 13:59:48 字數 1279 閱讀 7414

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 雙向鍊錶的結構體 兩個指標,分別指向前乙個和後乙個節...