棧
限制插入和刪除操作只能在乙個位置上進行的表。對棧的基本操作有push(進棧)和pop(出棧),前者相當於插入,後者則是刪除。棧也叫作先進後出表。
本文使用鍊錶實現棧。
#pragma once
/** 鍊錶型別宣告
*/struct node
;
#pragma once
#include "node.h"
/** 棧定義
* m_head表示煉表頭,用於標記棧是否為空
* m_top表示棧頂
*/class mystack
;
#include "stdafx.h"
#include "mystack.h"
/** 棧是限制插入和刪除只能在乙個位置上進行的表
* 插入和刪除操作在棧頂進行。棧有叫後進先出表
*/mystack::mystack()
mystack::~mystack()
/** data進棧,存放在棧頂
*/void mystack::push(int data)
/** 棧頂元素出棧
*/void mystack::pop()
node* p = m_top;
m_top = p->next;
delete p;}/*
*獲取棧頂元素
*/int mystack::top()
return m_top->data;}/*
*判斷棧是否為空棧
*/bool mystack::isempty()
return false;}/*
*棧包含元素個數
*/int mystack::size()
int size = 0;
node* p = m_top;
while (p != null && p != m_head)
return size;}/*
*顯示棧情況
*/void mystack::showstack()
cout << "this stack is(top->bottom):" << endl;
node* p = m_top;
while (p!=null && p != m_head)
cout << endl;}/*
*清空棧
*/void mystack::makeempty()
while (m_top != null && m_top != m_head) }
/**初始化
*/void mystack::initialize()
測試類
int arrs = ;
mystack* mystack = new mystack();
for each (int data in arrs)
mystack->showstack();
for (int i = 0; i <= sizeof(arrs) / sizeof(int); i++)
for each (int data in arrs)
mystack->makeempty();
mystack->showstack();
for each (int data in arrs)
mystack->showstack();
waituserpressakey();
return 0;
資料結構學習 棧
這一系列部落格的目的在於複習鞏固資料結構的基礎知識,為考研面試筆試做準備,所以重在原理,實踐不是重點。參考書籍有嚴蔚敏老師的 資料結構 c語言版 c c 資料結構與演算法速學速用大辭典 define stacksize 100 typedef int datatype typedef structs...
資料結構學習筆記 棧
它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。p...
資料結構學習筆記 棧
1.定義 棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。根據定義我們知道棧在本質上也是一種線性表,只是在插入和刪除操作上進行了限制。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何元素的棧稱為空棧。棧又稱為後進先出 last in first out 的...