資料結構學習二 棧

2021-07-25 07:42:37 字數 1791 閱讀 7503

限制插入和刪除操作只能在乙個位置上進行的表。對棧的基本操作有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 的...