c++中也會經常用的線性表鍊錶,對比各自特點,
線性表更適合完成棧的操作,因為線性表實際是陣列完成的,資料依次挨著排放,不需要前插把資料依次後移。
而鍊錶更適合佇列的操作,而鍊錶為了方便資料的尾插,頭刪,推出了帶頭節點的迴圈佇列。一下就是實現**:
//帶頭的迴圈順序佇列
#include
using namespace std;
typedef int datatype;
struct listnode
};class mylist
~mylist()
delete _head;
_head =
null;
//清理釋放還是要乙個節點乙個節點的delete釋放的。
}mylist(const mylist & ls)
:_head(new node(0))
dst->_next = _head;
//所以頭節點是沒有經行值拷貝的
}mylist& operator=(const mylist &ls)
return
*this;
}node*find(const datatype &x)
if (_head->_data == x)
return _head;
return
null;
//遍歷查詢節點並返回該位址
}void insert(node*pos, const datatype &x)
void erase(node* pos)
void pushback(const datatype& x)
//cur->_next = new node(x);
//cur->_next->_next = _head;
//cur->_next->_prev = cur;
//如果迴圈鍊錶的尾插還有遍歷,,,那迴圈還有啥用
node *cur = _head->_prev;
cur->_next =
new node(x);
node *newnode = cur->_next;
newnode->_next = _head;
newnode->_prev = cur;
_head->_prev = newnode;
}void pushfront(const datatype &x)
void popback()
void popfront()
size_t size()
return count;
}bool empty()
// void print()
//
// cout << cur->_data;
// cout << endl;
// }
//print自己寫完測試用的哦
private:
node *_head;
};
佇列的模擬實現 c語言
test.c define crt secure no warnings 1 include queues.h intmain queues.c include queues.h include include include include include typedef struct mycir...
C 實現迴圈順序佇列(佇列)
佇列同棧相對,前者為先進先出 first in first in 順序隊裡中,使用陣列儲存資料,基本原理同順序線性表和順序棧。由於使用陣列,所以必須事先定義陣列的最大容量maxsize,使用front表示隊頭位置 最先入元素 使用rear表示隊尾元素 最後入元素 這樣每進入乙個元素,rear要自加一...
迴圈佇列 順序佇列(C )
佇列 queue 是一種限定訪問位置的線性變。他允許在表的一端插入,在另一端刪除。這個和計算機排程策略中的先來先服務fcfs first come first served 是一樣的。佇列中可以插入的一端為隊尾 rear 允許刪除的一端稱為隊頭 front 佇列也分為兩種,一種是用陣列的儲存表示,一...