資料結構之佇列 list派生

2021-08-28 17:44:06 字數 2436 閱讀 1187

#include using namespace std;

typedef int rank;

#define posi(t) listnode* //列表節點位置

//節點叫法:頭 首 末 尾

templatestruct listnode

//針對header和trailer的構造

listnode(t e, posi(t) p = null, posi(t) s = null) : data(e), pred(p), succ(s) {}//預設構造器

posi(t) insertaspred(t const &e);//前插入

posi(t) insertassucc(t const &e);//後插入

};templateposi(t) listnode::insertaspred(t const &e)

templateposi(t) listnode::insertassucc(t const &e)

templateclass list

~list();

void show();

int deduplicate();//無序唯一化

int uniquify();//有序唯一化

t &operator(rank r) const;//徇秩訪問,效率低

t remove(posi(t) p);//刪除節點

posi(t) first() const //首節點位置

posi(t) last() const //末節點位置

//以p為根節點,在他的n個真前驅中找e

posi(t) find(t const &e, int n, posi(t) p) const;

//p的n個真前驅中,找到不大於e的最後者

posi(t) search(t const &e, int n, posi(t) p) const;

posi(t) insertasfrist(t const &e);//將e作為首節點插入

posi(t) insertaslast(t const &e);//將e作為末節點插入

posi(t) insertbefore(posi(t) p, t const &e);//e作為p的前驅插入

posi(t) insertafter(posi(t) p, t const &e);//e作為p的後繼插入

void selectionsort(posi(t) p, int n);//p後的n個節點擊擇排序

posi(t) selectmax(posi(t) p, int n);//選出最大值

void insertionsort(posi(t) p, int n);//p後的n個節點插入排序

};templatevoid list::init()

templatevoid list::copynodes(posi(t) p, int n)

}templateint list::clear()

templatelist::~list()

templateint list::deduplicate()

return oldsize - _size;

}templateint list::uniquify()

templatet &list::operator(rank r) const //&是後加上去的

templatet list::remove(posi(t) p)

templateposi(t) list::find(t const &e, int n, posi(t) p) const

templateposi(t) list::search(t const &e, int n, posi(t) p) const

templateposi(t) list::insertasfrist(t const &e)

templateposi(t) list::insertaslast(t const &e)

templateposi(t) list::insertbefore(posi(t) p, t const &e)

templateposi(t) list::insertafter(posi(t) p, t const &e)

templatevoid list::selectionsort(posi(t) p, int n)

}templateposi(t) list::selectmax(posi(t) p, int n)

templatevoid list::insertionsort(posi(t) p, int n)

}//一次插入對應一次銷毀,o(1)輔助空間,原地操

templatevoid list::show()

coutt dequeue()

t &front()

};int main(int argc, char const *argv)

redis資料結構之List

在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。list中可以包...

Redis資料結構之list

lpush rpush 從左邊 右邊插入乙個或多個值,類似推箱子。lpop rpop 從左邊 右邊吐出乙個值。值在鍵在,值光鍵亡 rpoplpush 從列表右邊吐出乙個值,插到列表左邊 lrange 按照索引下標獲得元素 從左到右 lindex 按照索引下標獲得元素 從左到右 llen 獲得列表長度...

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...