模板(雙向鍊錶與佇列)

2021-07-16 09:37:21 字數 1958 閱讀 9850

」雙向鍊錶與佇列「

「雙向鍊錶」是包含兩個指標域,乙個資料域,既有指向前驅的指標,還有指向後繼的指標,同時可以從兩個方向對鍊錶進行遍歷,訪問各個節點。「雙向鍊錶」較」單鏈表「在插入和刪除節點方面更為簡單,但是所佔的空間比「單鏈表」大。「佇列」的實現之所以選擇使用雙向鍊錶,是因為佇列的特點是「先進先出」,如若使用順序表則很大程度上的浪費空間。在這樣的情境下,鍊錶較順序表更為合適。

根據「模板」的概念,設計並實現雙向鍊錶,進而實現佇列的基本功能。下面是利用模板來實現雙向鍊錶的具體**:

#pragma once

#include //雙向鍊錶 

template struct listnode

};template class list

~list()   //析構函式

public:

void pushback(const t & x)     //尾插

else

}void popback()    //尾刪

else if (_head == _tail)

else

}void pushfront(const t & x)     //頭插

else

}void popfront()     //頭刪

}else

}void insert(listnode* pos,const t& x)    //在pos位置上插入資料x

void erase(listnode* pos)    //刪除pos位置上的資料

else if (_head == _tail)

else

}listnode* find(const t & x)     //查詢

tmp = tmp->_next;

}if (tmp->_next)

}t & top()     //讀取隊頭元素

t & back()     //讀取隊尾元素

void reverse()     //逆置

}void sort()      //氣泡排序

cur = cur->_next;

tmp = tmp->_next;}}

void unique()    //在有序鍊錶中,去掉重複的資料

cur = cur->_next;

tmp = tmp->_next;}}

void merge(list& s)    //將某乙個鍊錶連線到這個鍊錶後面

void splice(listnode* pos, list& s)    //將乙個鍊錶連線到pos位置後面

else

}size_t size()    //計算鍊錶中的元素個數

return count;

}void print()   //格式輸出

cout << endl;

}void clear()

}private:

listnode* _head;

listnode* _tail;

};

對於」佇列「能夠利用上述雙向鍊錶的功能來實現,下面就是基本的程式**:

#pragma once

#include //佇列

#include #include "listnode.h"

template class container = list>

class queue

void pop()         //出佇列

bool empty()    //判斷佇列是否為空

size_t size()    //計算佇列中的元素個數

t & top()    //隊頭節點

t & back()    //隊尾節點

void print()    //格式輸出

private:

container_con;

};

模板雙向鍊錶

順序表和煉表幾乎是面試必考點,前面我們已經介紹過了模板順序表 用模板寫鍊錶主要還是為了實現 的型別通用性,以下 將實現鍊錶的增 刪 查 改 判空等操作。define crt secure no warnings 1 pragma once include include using namespac...

雙向迴圈鍊錶模板

include include include include iostream using namespace std define maxnum 0x7fffffff define maxscore 100000 typedef struct lnode lnode,linklist 2 測鍊錶...

C 篇 雙向鍊錶list與雙向佇列deque

list的介紹 list雙向鍊錶在任何位置的插入和刪除為常數時間,不支援根據下標隨機訪問元素,具有所有順序容器都有的成員函式。list的成員函式 push front 在鍊錶最前面插入 pop front 刪除鍊錶最前面的元素 sort 排序 list 不支援 stl 的演算法 sort remov...