棧的順序儲存結構——順序棧 圖解和程式碼實現
棧的順序儲存結構稱為順序棧
先看下順序棧的圖片:
SeqStack.h
//SeqStack.h #ifndef SEQSTACK_H #define SEQSTACK_H const int StackSize=10; //10只是示例性的資料,可以根據實際問題具體定義 template <class T> //定義模板類SeqStack class SeqStack { public: SeqStack( ) ; //建構函式,棧的初始化 ~SeqStack( ); //解構函式 void Push(T x); //將元素x入棧 T Pop( ); //將棧頂元素彈出 T GetTop( ); //取棧頂元素(並不刪除) bool Empty( ); //判斷棧是否為空 private: T data[StackSize]; //存放棧元素的陣列 int top; //棧頂指標,指示棧頂元素在陣列中的下標 }; #endif
SeqStack.cpp
//SeqStack.cpp #include "SeqStack.h" /* * 前置條件:棧不存在 * 輸 入:無 * 功 能:棧的初始化 * 輸 出:無 * 後置條件:構造一個空棧 */ template <class T> SeqStack<T>::SeqStack( ) { top=-1; } /* * 前置條件:棧已存在 * 輸 入:無 * 功 能:銷燬棧 * 輸 出:無 * 後置條件:釋放棧所佔用的儲存空間 */ template <class T> SeqStack<T>::~SeqStack( ) { } /* * 前置條件:棧已存在 * 輸 入:元素值x * 功 能:在棧頂插入一個元素x * 輸 出:如果插入不成功,丟擲異常 * 後置條件:如果插入成功,棧頂增加了一個元素 */ template <class T> void SeqStack<T>::Push(T x) { if (top== StackSize-1) throw "上溢"; top++; data[top]=x; } /* * 前置條件:棧已存在 * 輸 入:無 * 功 能:刪除棧頂元素 * 輸 出:如果刪除成功,返回被刪元素值,否則,丟擲異常 * 後置條件:如果刪除成功,棧頂減少了一個元素 */ template <class T> T SeqStack<T>::Pop( ) { T x; if (top==-1) throw "下溢"; x=data[top--]; return x; } /* * 前置條件:棧已存在 * 輸 入:無 * 功 能:讀取當前的棧頂元素 * 輸 出:若棧不空,返回當前的棧頂元素值 * 後置條件:棧不變 */ template <class T> T SeqStack<T>::GetTop( ) { if (top!=-1) return data[top]; } /* * 前置條件:棧已存在 * 輸 入:無 * 功 能:判斷棧是否為空 * 輸 出:如果棧為空,返回1,否則,返回0 * 後置條件:棧不變 */ template <class T> bool SeqStack<T>::Empty( ) { if(top==-1) return 1; else return 0; }
相關推薦
棧的順序儲存結構——順序棧 圖解和程式碼實現
棧的順序儲存結構稱為順序棧 先看下順序棧的圖片: SeqStack.h //SeqStack.h #ifndef SEQSTACK_H #define SEQSTACK_H const int StackSize=10; //10只是示例性的資料,可以根據實際問題
棧的順序儲存結構 順序棧(Sequential Stack) C++
seqStack.h #ifndef __SEQSTACK_H__ #define __SEQSTACK_H__ const int size = 10; template <class T> class seqStack { public: seqStack(vo
1.線性表的順序儲存結構————順序表(包含C語言和C++版本的完整程式)
1.順序表的定義 將表中元素一個接一個的存入一組連續的儲存單元中,這種儲存結構是順序結構,採用順序儲存結構的線性表簡稱為“ 順序表”。 順序表的儲存特點是:只要確定了起始位置,表中任一元素的地址都通過下列公式得到: Loc(ai)=L
棧的順序儲存結構和鏈式儲存結構
1.棧的定義: 在表尾進行插入和刪除操作的線性表(仍然滿足線性表的操作,只是在push和pop有些區別) 棧頂(top)允許插入和刪除,另一端稱棧底(bottom),不含任何資料元素的棧叫空棧。 棧:後進先出(last in first out)的線性表,簡稱LIFO結構。 棧的插入
資料結構棧和佇列(五)棧的順序儲存結構和鏈式儲存結構的實現
一、 實驗目的1. 熟悉棧的特點(先進後出)及棧的抽象類定義;2. 掌握棧的順序儲存結構和鏈式儲存結構的實現;3. 熟悉佇列的特點(先進先出)及佇列的抽象類定義;4. 掌握棧的順序儲存結構和鏈式儲存結構的實現;二、實驗要求1. 複習課本中有關棧和佇列的知識;2. 用C++語言
棧的定義,兩種基本的儲存結構:順序儲存結構和鏈式儲存結構
棧的定義 棧(stack )又稱堆疊,它是運算受限的線性表。 其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行插入、查詢、刪除等操作。 表中進行插入、刪除操作的一端稱為 棧頂(top) ,棧頂儲存的元素稱為 棧頂元素。 相對的,表的另一端稱為棧底(bottom)
【資料結構作業三】利用棧(以順序棧作儲存結構)實現二、十和十六進位制轉換
#include <iostream> #define MAXSIZE 100 using namespace std; typedef int SElemType; typedef struct { SElemType *base; SElemType
大白話講資料結構和演算法__11 棧的順序儲存結構定義與插入,刪除等操作
棧的定義 棧是一種重要的線性結構,可以這樣講,棧是線性表的一種具體形式。 例如,我們瀏覽網頁,點選後退,我們不會直接返回第一個介面,而是上一個頁面,這種後進先出的資料結構就是棧,棧應用是非常廣泛的。 例如我們Word,Photoshop等的“撤銷”功能也是如此。再例如我們C
資料結構學習筆記9--棧和佇列的順序儲存結構
棧和佇列的相同點和不同點: 相同點:棧和佇列是兩種重要的資料結構,也是兩種特殊的線性表結構。從資料的邏輯角度看,棧和佇列是線性表;從操作的角度來看,棧和佇列的基本操作是線性表基本操作的子集,是操作受限
3.1 棧的順序儲存結構
<?php header("content-type:text/html;charset=utf-8"); /** * 棧的順序儲存結構的基本操作 * *包括 * 1.順序棧的初始化 __contruct() * 2.銷燬棧 destroyStack() * 3.清空棧 clearSt
【資料結構】棧的順序儲存結構 C語言實現
棧(stack),是一種線性儲存結構,它有以下幾個特點: 棧中資料是按照"後進先出(LIFO, Last In First Out)"方式進出棧的。 向棧中新增/刪除資料時,只能從棧頂進行操作。 基本操作 initStack(&S) destroySt
棧的順序儲存結構與基本運算
// // main.cpp // 棧的基本運算 // // Created by 柯木超 on 2018/12/3. // Copyright © 2018年 柯木超. All rights reserved. // #include <iostream> #define m
Java中棧的實現(1)-使用順序儲存結構(陣列)以及實現
棧和佇列其實是與普通的線性發展而來的,為普通的線性表增加一些特殊的限制就可以得到棧和隊列了。從功能上看,棧和佇列比普通的線性表功能相對弱一點,但是在特殊的場合下,使用棧和佇列更有利,例如,編譯器在實現函式的呼叫的時候需要使用棧來儲存斷點,實現遞迴演算法時候也需要用棧來儲存。
棧的順序儲存結構 -- C++使用類模板實現
棧 棧是先進後出的線性表。即限定只能在表的一段進行插入和刪除操作的線性表。 棧結構在計算機中有廣泛的應用。常見的軟體的”撤銷”和”恢復”功能就是用棧實現的。 棧的順序儲存結構示例程式碼 template<typename T> cla
棧的順序儲存結構及實現
棧和佇列: 前面已經介紹完了線性表的順序和鏈式兩中實現,但如果再對線性表增加一些額外的限制和約束,例如,去除普通線性表中通過索引訪問資料元素的功能,去除普通線性表中查詢某個元素在表中的位置的功能。去除普通線性表中可以在任意位置隨意增加、刪除元素的功能,而是改為只允許線上性表
棧的順序儲存結構C語言
棧是一種先入後出的資料結構,應用也非常廣泛,例如在電腦中檔案管理裡,點選進入多層檔案裡,然後點返回鍵,又能回到原處。雙擊進入相當於入棧,返回相當於出棧,返回時只能返回到當前級的上一級。 棧的儲存結構與連結串列一樣,有順序儲存結構和鏈式儲存結構,先來談一談順序儲
鏈式儲存結構和順序儲存結構的區別
演算法設計的要求 時間效率高 儲存量低 順序儲存結構和鏈式儲存結構的區別 連結串列儲存結構的記憶體地址不一定是連續的,但順序儲存結構的記憶體地址一定是連續的; 鏈式儲存適用於在較頻繁地插入、刪除、更新元素時,而順序儲存結構適用於頻繁查詢時使用。 順序儲
佇列的順序儲存結構和鏈式儲存結構
佇列(queue)是隻允許在一端進行插入操作,而在另一端進行刪除操作的線性表(在隊尾進行插入操作,在對頭進行刪除操作)。 與棧相反,佇列是一種先進先出(First In First Out, FIFO
線性表包括順序儲存結構和鏈式儲存結構
還記得資料結構這個經典的分類圖吧: 今天主要關注一下線性表。 什麼是線性表 線性表的劃分是從資料的邏輯結構上進行的。線性指的是在資料的邏輯結構上是線性的。即在資料元素的非空有限集中 (1) 存在唯一的一個被稱作“第一個”的資料元素,(2) 存在唯一的一個被稱
【資料結構和演算法】8 線性表:線性表的順序儲存結構
線性表的順序儲存結構 線性表有兩種物理儲存結構: 順序儲存結構 和 鏈式儲存結構。 物理上的儲存方式事實上就是在記憶體中找個初始地址,然後通過佔位的形式,把一定的記憶體空間給佔了,然後把相同資料型別的資料元素依次放在這塊空地中。 順序儲存結構:指的是用一段地址連續的儲