部落格第一天
雙向鍊錶類
ccircularnode.h
class ccircularnode
~ccircularnode();
ccircularnode *getnextnode()
ccircularnode *getlastnode()
static
void initialize(ccircularnode *node)
static
bool erase(ccircularnode *node);
static ccircularnode *createobject()
bool insertbefore(ccircularnode *node);
bool insertafter(ccircularnode *node);
virtual
void destroy()
protected:
ccircularnode *lastnode, *nextnode;
};
ccircularnode.cpp
#include "ccircularnode.h"
ccircularnode::ccircularnode(ccircularnode &)
ccircularnode::~ccircularnode()
bool ccircularnode::erase(ccircularnode *node)
// 插入頭節點前
bool ccircularnode::insertheaderbefore(ccircularnode *node)
// 插入頭節點後
bool ccircularnode::insertheaderafter(ccircularnode *node)
最後 如何使用該類
自定義繼承自ccircularnode的mylistnode
該類有兩個成員變數
class mylistnode : public ccircularnode
virtual
void destroy()
int id;
char *name;
static
int count;
protected:
mylistnode():ccircularnode() {}
mylistnode(mylistnode &);
};
如何使用呢:
void usecircularlist()
//遍歷雙向迴圈鍊錶,輸出結果
printf("print list:%d ",mynode->id);
tmpnode = (mylistnode*)mynode->getnextnode();
while(tmpnode!=mynode)
printf("\n");
//釋放記憶體
tmpnode = (mylistnode*)mynode->getnextnode();
//如果mylistnode::erase返回false,說是mynode結點是該雙向迴圈鍊錶中的最後乙個結點。
while(mylistnode::erase(mynode))
mynode->destroy();
}
雙向迴圈鍊錶類C 實現。2020 11 1
記錄乙個小白的轉型之路,一轉眼又是新的一天過去了,博主今天想快速結束資料結構與演算法的線性表這一章,主要是想用c 把他們乙個個的實現起來,所以想直接將迴圈鍊錶和雙向鍊錶一起結合起來實現c 中的list容器的基本實現,emmm,這對於乙個小白還是挺煩的,倒不是說難,演算法到時很簡單,不過到了去實現的時...
C 實現雙向迴圈鍊錶
雙向迴圈鍊錶 除錯正常,所有功能均測試 節點類 template class listnode listnode type d,listnode n nullptr,listnode p nullptr data d next n prev p void setdata type d 雙向迴圈鍊錶 ...
雙向迴圈鍊錶的c 實現
雙向迴圈鍊錶,即每個節點都擁有一前一後兩個指標且頭尾互鏈的鍊錶。各種鍊錶的簡單區別如下 單向鍊錶 基本鍊錶 單向迴圈鍊錶 不同於單向鍊錶以 null 判斷鍊錶的尾部,單向迴圈鍊錶的尾部鏈結到表頭,因此當迭代操作到表頭前即是尾部 雙向鍊錶 比單向鍊錶多出指向前乙個節點的指標,但實際上使用雙向鍊錶時很少...