棧(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...