C 棧和佇列的模擬實現

2021-08-09 06:11:49 字數 2064 閱讀 5446

棧(stack)是限定僅在表尾進行插入和刪除操作的線性表

我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料原色的棧稱為空棧。棧又稱為後進先出(last in first out)的線性表,簡稱lifo結構。

**實現:

template

class

stack

stack(const

stack

& s)

_size = s._size;

_capacity = s._capacity;

}~stack()

}void checkcapacity()

delete _data;

_data = tmp;

_capacity = _newcapacity;}}

void push(const t& x)

_data[_size] = x;

_size++;

}void pop()

t& top()

bool empty()

private:

t* _data;

size_t _size;

size_t _capacity;

};

測試用例:

void test1()

cout

<< endl;

}

實現結果:

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

佇列是一種先進先出(first in first out)的線性表,簡稱fifo。我們將允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。

**實現:

template

struct listnode

};template

class queue

queue(const queue

& q)

}~queue()

_head =

null;

}void push(const t& x)

cur->_next = tmp;

tmp->_next =

null;

}void pop()

t& back()

return cur->_data;

}t& front()

bool empty()

void print()

cout << endl;

}private:

node* _head;

};

測試用例:

void test2()

cout << endl;

myqueue.push(1);

myqueue.push(2);

myqueue.push(3);

myqueue.push(4);

myqueue.push(5);

myqueue.push(6);

myqueue.pop();

myqueue.pop();

myqueue.pop();

myqueue.print();

cout << myqueue.front() << ' '

; cout << endl;

cout << myqueue.back() << ' '

; cout << endl;

}

實現結果:

棧和佇列的模擬實現

ifndef stack h define stack h include include include typedef int stdatatype typedef struct stack stack void stackinit stack ps 初始化 void stackdestory ...

佇列的模擬實現 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 模擬實現迴圈順序佇列

c 中也會經常用的線性表鍊錶,對比各自特點,線性表更適合完成棧的操作,因為線性表實際是陣列完成的,資料依次挨著排放,不需要前插把資料依次後移。而鍊錶更適合佇列的操作,而鍊錶為了方便資料的尾插,頭刪,推出了帶頭節點的迴圈佇列。一下就是實現 帶頭的迴圈順序佇列 include using namespa...