91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++中棧與隊列的實現

發布時間:2020-07-27 21:31:28 來源:網絡 閱讀:309 作者:走走停停吧 欄目:編程語言
  1. 棧:具有先進后出的特點,且只能在一端進行插入與刪除的操作,棧的實現如下所示


  2. struct truetype

  3. {

  4. bool get()

  5. {

  6. return true;

  7. }

  8. };

  9. struct falsetype

  10. {

  11. bool get()

  12. {

  13. return false;

  14. }

  15. };

  16. template<class T>

  17. struct typetraits

  18. {

  19. typedef falsetype  isnpodtype;

  20. };

  21. template <>

  22. struct typetraits<int>

  23. {

  24. typedef truetype  ispodtype;

  25. };


  26. template<class T>

  27. class stack

  28. {

  29. protected:

  30. T *_a;

  31. size_t _top;

  32. size_t _capacity;

  33. public:

  34. stack()

  35. : _top(0)

  36. , _capacity(3)

  37. {

  38. _a = new T[_capacity];

  39. }

  40. ~stack()

  41. {

  42. if (_a)

  43. delete[] _a;

  44. }

  45. void  checkcapacity()

  46. {

  47. if (_top == _capacity)

  48. {

  49. _capacity = 2 * _capacity;

  50. T *tem = new T[_capacity];

  51. if ((typetraits<T>::ispodtype()).get())

  52. {

  53. memcpy(tem, _a, sizeof(T)*_capacity);

  54. delete[]_a;

  55. _a = tem;

  56. }

  57. else

  58. {

  59. int i = 0;

  60. for (i = 0; i < _top; i++)

  61. {

  62. tem[i] = _a[i];


  63. }

  64. delete[]_a;

  65. _a = tem;

  66. }

  67. }

  68. }

  69. void push(const T&x)

  70. {

  71. checkcapacity();

  72. _a[_top] = x;

  73. _top++;

  74. }

  75. void pop()

  76. {

  77. _top--;

  78. }

  79. bool Empty()

  80. {

  81. return _top == 0;


  82. }

  83. T &Top()

  84. {

  85. if (_top > 0)


  86. {

  87. size_t ret = _top;

  88. _top--;

  89. return _a[ret - 1];

  90. }

  91. }


  92. };

  93. int main()

  94. {

  95. stack<int> s1;

  96. s1.push(1);

  97. s1.push(2);

  98. s1.push(3);

  99. s1.push(4);

  100. while (!s1.Empty())

  101. {

  102. cout << s1.Top() << " ";

  103. }

  104. getchar();

  105. return 0;

  106. }

2.隊列:具有隊頭插入,隊尾刪除的特點,具有一個頭指針和一個尾指針

template <class T>

struct Node

{

T _data;

Node <T> *_next;

Node(const T &data=0)

{

_data = data;

_next = NULL;

}

};

template <class T>

class Queue

{

protected:

Node<T> *_head;

Node <T>*_tail;

public:

Queue()

:_head(NULL)

, _tail(NULL)

{}

~Queue()

{

Node<T> *ret = NULL;

if (_head == NULL)

return;

if (_head == _tail)

{

delete _head;

_head = NULL;

_tail = _head;

}

else

{

while (_head)

{

pop();

}

}

}

void push(const T&x)

{

Node<T> *newNode = new Node<T>(x);

if (_tail == NULL)

{

_tail = newNode;

_head = _tail;

}

else

{

_tail->_next = newNode;

_tail = newNode;

}

}

void pop()

{

Node<T>*ret = NULL;


if (_head == NULL)

return;

if (_head == _tail)

{

delete _head;

_head = NULL;

_tail = _head;

}

else

{

ret = _head;

_head = _head->_next;

delete ret;

}

}

T &Front()

{

Node <T>*ret = _head;

_head = _head->_next;

return ret->_data;

}

T &Back()

{

Node <T>*ret = _tail;

_tail = _head->_tail;

return _tail->_data;

}

bool Empty()

{

return _head == _tail;

}

void show()

{

while (_head)

{

cout << _head->_data << " ";

_head = _head->_next;

}

}

};

int main()

{

Queue<int> q;

q.push(1);

q.push(2);

q.push(3);

q.push(4);

q.pop();

q.show();

getchar();

return 0;

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会理县| 炉霍县| 平乐县| 新竹县| 营口市| 梁河县| 开化县| 五指山市| 佛山市| 肃宁县| 盐边县| 玉屏| 东城区| 铜山县| 濮阳市| 蓬溪县| 临澧县| 武定县| 盐源县| 太康县| 鱼台县| 凌云县| 揭东县| 咸宁市| 梨树县| 栖霞市| 德清县| 阿拉善盟| 共和县| 叙永县| 安泽县| 新宾| 徐闻县| 昌黎县| 濮阳县| 神木县| 古丈县| 伊通| 霍林郭勒市| 来凤县| 堆龙德庆县|