四、雙向迴圈鍊錶的實現
template class cycdullist
~cycdullist();
//獲取鍊錶大小
size_t size()
//判斷鍊錶是否為空
bool empty()
//獲取頭節點
listnode*get_head()
//獲取任意位置節點
listnode*get_node(const int &index);
//根據節點獲取該節點的下標
int get_index(const t &value);
//雙向鍊錶插入元素
void push_back(const t &value);//在尾部插入元素
void push_front(const t &value);//在頭部插入元素
void insert(const int &index,const t &value);//在任意位置插入元素
//雙向鍊錶刪除元素
t pop_front();//刪除首元素
t pop_back();//刪除尾元素
t erase(const int &index);//刪除任意位置元素
//雙向鍊錶修改元素
void set(const int &index,const t &value);
//雙向鍊錶查詢元素
t front();//獲取首元素
t back();//獲取尾元素
t get(const int &index);//獲取任意位置元素
//列印鍊錶
void print();
private:
listnode*head_;
size_t size_;
};template cycdullist::~cycdullist()
size_=0;
}}template listnode* cycdullist::get_node(const int &index)
return cur;
}template int cycdullist::get_index(const t &value)
else
++size_;
}template void cycdullist::push_front(const t &value)
else
++size_;
}template void cycdullist::insert(const int &index, const t &value)
listnode*node=new listnode(value);
node->next=p;
node->front=p->front;
p->front->next=node;
p->front=node;
++size_;
}}template t cycdullist::pop_front()
else if(size_==1)else
}template t cycdullist::pop_back()
else if(size_==1) else
}template t cycdullist::erase(const int &index)
p->front->next=p->next;
p->next->front=p->front;
t value=p->value_;
delete p;
p= nullptr;
--size_;
return value;
}}template void cycdullist::set(const int &index, const t &value)
p->value_=value;
}template t cycdullist::front()
else
}template t cycdullist::back()
else
}template t cycdullist::get(const int &index)
return p->value_;
}}template void cycdullist::print()
{ for(int i=0;i帶頭節點的雙向迴圈鍊錶的基本操作
資料結構-雙向鍊錶&雙向迴圈鍊錶
線性表 雙向迴圈鍊錶
雙向鍊錶 double liked list 就是在單向鍊錶的每個結點中,新增乙個指向前驅結點的指標域。class doublenode 雙向鍊錶迴圈帶頭結點的空鍊錶,如圖 非空的迴圈帶頭結點的雙向鍊錶,如圖 插入操作不複雜,不過順序很重要,不要寫反了。假設儲存元素 e 的結點為 s,要實現將結點 ...
線性表之雙向鍊錶
include include define error 0 define ok 1 typedef int status typedef int elemtype typedef struct dulnodedulnode,dulinklist 雙向鍊錶的結構體 兩個指標,分別指向前乙個和後乙個節...
線性表之雙向鍊錶
雙向鍊錶 include include 狀態量 define ok 1 define error 0 adt 雙鏈表結構說明 typedef int elemtype typedef struct dnodedlistnode typedef dlistnode dlinklist 節點 模組定義...