線性表(一) 鍊錶之雙向迴圈鍊錶

2021-09-28 06:09:01 字數 2185 閱讀 2683

四、雙向迴圈鍊錶的實現

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 節點 模組定義...