資料結構之棧複雜資料應用實現(2)
#include<iostream>
#include"MyStack.h"
using namespace std;
/*
棧
要求:
1.定義Coordinate座標類
2.改造棧類,使其可以適用於座標類
目的:理解抽象資料型別在棧中的應用
*/
int main(){
Coordinate c1(1, 2);
Coordinate c2(1, 3);
Coordinate c3(1, 4);
MyStack *pStack = new MyStack(4);
pStack->push(c1);
pStack-> push(c2);
pStack->push(c3);
pStack->stackTraverse();
delete pStack;
pStack = NULL;
return 0;
}
#ifndef COORDINATE_H
#define COORDINATE_H
class Coordinate
{
public:
Coordinate(){}
Coordinate(int x, int y);
void printCoordinate();
private:
int m_iX;
int m_iY;
};
#endif
#include"Coordinate.h"
#include<iostream>
using namespace std;
Coordinate::Coordinate(int x, int y) :m_iX(x), m_iY(y){
}
void Coordinate::printCoordinate(){
cout << "(" << m_iX << "," << m_iY << ")" << endl;
}
#ifndef MYSTACK_H
#define MYSTACK_H
#include"Coordinate.h"
class MyStack
{
public:
MyStack(){}
MyStack(int size); //分配棧空間
~MyStack();
bool stackEmpty();
bool stackFull();
void clearStack();
int stackLength();
bool push(Coordinate elem);
bool pop(Coordinate &elem);
void stackTraverse();
private:
Coordinate *m_pBuffer; //棧空間指標
int m_iSize; //棧容量
int m_iTop; //棧頂,棧中元素個數
};
#endif
#include "MyStack.h"
#include<iostream>
#include"Coordinate.h"
using namespace std;
MyStack::MyStack(int size){
m_iSize = size;
m_iTop = 0;
m_pBuffer = new Coordinate[size];
}
MyStack::~MyStack(){
delete[] m_pBuffer;
m_pBuffer = nullptr;
}
bool MyStack::stackEmpty(){
if (0==m_iTop)
return true;
return false;
}
bool MyStack::stackFull(){
if (m_iTop == m_iSize)
return true;
return false;
}
void MyStack::clearStack(){
m_iTop = 0;
}
int MyStack::stackLength(){
return m_iTop;
}
bool MyStack::push(Coordinate elem){
if (stackFull())
return false;
m_pBuffer[m_iTop++] = elem;
return true;
}
bool MyStack::pop(Coordinate &elem){
if (stackEmpty())
return false;
m_iTop--;
elem = m_pBuffer[m_iTop];
return true;
}
void MyStack::stackTraverse(){
for (int i = 0; i < m_iTop; i++)
m_pBuffer[i].printCoordinate();
}
相關推薦
資料結構之棧複雜資料應用實現(2)
#include<iostream> #include"MyStack.h" using namespace std; /* 棧 要求: 1.定義Coordinate
資料結構——線性錶鏈式表示和實現(2)
本文所有程式碼均為偽碼,僅闡述演算法基本思想——《資料結構》清華大學出版社 - 演算法1 帶頭結點的雙向迴圈連結串列(儲存結構由c2-4.h定義)的基本操作(14個) typedef struct DuLNode { ElemType data;
Java資料結構之——棧:用陣列實現
/** * This is an abstract data type interface for the stack. * This interface includes methods: * {@code pop},{@code push},{@code peek},{@code isEm
資料結構——c語言描述 第三章 (2)棧的練習(四則運算的實現)
棧的基本概念和實現我在上一篇文章中實現了,現在做一下練習,一個簡單的四則運算的實現,還是比較簡單的,我並沒有再往下實現括號的四則運算,這個都是次要的,主要是掌握棧的操作方法,和一些基本的注意事項,其實這個程式碼我之前刪除了又重寫了一邊,第一遍在實現的過程中對自己的程式碼並沒
資料結構---二叉搜尋樹BST實現(C++)
1. 二叉查詢樹 二叉查詢樹(Binary Search Tree),也稱為二叉搜尋樹、有序二叉樹(ordered binary tree)或排序二叉樹(sorted binary tree),是指一棵空樹或者具有下列性質的二叉樹: 若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值
資料結構之樹與二叉樹(下)
上面兩篇我們瞭解了樹的基本概念以及二叉樹的遍歷演算法,還對二叉查詢樹進行了模擬實現。數學表示式求值是程式設計語言編譯中的一個基本問題,表示式求值是棧應用的一個典型案例,表示式分為字首、中綴和字尾三種形式。這裡,我們通過一個四則運算的應用場景,藉助二叉樹來幫助求解表
Python資料結構——二叉搜尋樹的實現(下)
搜尋樹實現(續) 最後,我們把注意力轉向二叉搜尋樹中最具挑戰性的方法,刪除一個鍵值(參見Listing 7)。首要任務是要找到搜尋樹中要刪除的節點。如果樹有一個以上的節點,我們使用_get方法找到需要刪除的節點。如果樹只有一個節點,這意味著我們要刪除樹的根,但是我們仍然要檢查根的鍵值是否與要刪除的鍵值匹配。
Python資料結構——二叉搜尋樹的實現(上)
二叉搜尋樹 我們已經知道了在一個集合中獲取鍵值對的兩種不同的方法。回憶一下這些集合是如何實現ADT(抽象資料型別)MAP的。我們討論兩種ADT MAP的實現方式,基於列表的二分查詢和雜湊表。在這一節中,我們將要學習二叉搜尋樹,這是另一種鍵指向值的Map集合,在這種情況下我們不用
資料結構之棧實現檢查左右括號是否匹配
def isValid(self,s): stack = [] paren_map = {')': '(', ']': '[', '}': '{'} for c in s: if c not in paren_map: stack.appe
資料結構之棧(Stack)的關於C語言的實現
C語言實現棧共有兩種方法,一種是使用陣列的包含最大Size的棧,另外一種是運用連結串列的方法實現 關於陣列方法實現的程式碼如下: #include<stdio.h> /** * Your MinStack struct will be instantiate
C資料結構之棧的應用:括號匹配和簡單計算器
堆疊是一種資料項按序排列的資料結構,只能在其一端進行插入和刪除。括號匹配和表示式求值是堆疊的兩個典型應用。1.找到無法匹配的左右括號,輸出原字串,失配的左括號下打&,右括號下打? 輸入包括多組資料,每組資料一行,包含一個字串,只包含左右括號和大小寫字母,字元長度不超過
Java資料結構之——棧:用連結串列實現
class Node<E>{ E data; Node<E> next = null; public Node(E data){ this.data = data; } } public class ListStack<
資料結構之棧實現計算器
在終端輸入一個表示式(四則運算及括號),計算表示式的值。 calculator.h #ifndef __CALCULATOR_H__ #define __CALCULATOR_H__ #define TRUE 1 #define FALSE 0 #define MAX
資料結構之二叉樹應用(哈夫曼樹及哈夫曼編碼實現)(C++)
一、哈夫曼樹1.書上用的是靜態連結串列實現,本文中的哈夫曼樹用 排序連結串列 實現;2.實現了從 字元頻率統計、構建權值集合、建立哈夫曼樹、生成哈夫曼編碼,最後對 給定字串的編碼、解碼功能。3.使用到的 “SortedList.h”標頭檔案,在上篇博文:資料結構之排序單鏈表。
資料結構之棧模板實現(3)
注意:1 注意模板的格式,宣告檔案和實現檔案都放在標頭檔案中,無法實現分離編譯; 2 學會過載運算子和友元函式使用 #ifndef MYSTACK_H #define MYS
資料結構之棧的應用(算術計算)
棧的應用實戰2-->算術計算 問題的提出:計算機的本質工作就是做數學運算,那計算機可以讀入字串“9 + (3 - 1) * 5 + 8 / 2”並計算值嗎? 波蘭科學家在20世紀50年代提出了一種將運算子放在數字後面的字尾表示式。對應的,我們習慣的數學表示式叫做中綴表
資料結構之棧及Java實現
一、棧的基本介紹 棧是一種只允許在一端進行插入或刪除的線性表,也就是說先進後出。棧的操作端通常被稱為棧頂,另一端被稱為棧底,棧的插入操作稱為壓棧(push),棧刪除操作稱為出棧(pop)。壓棧是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;出棧則是把棧頂元
C語言資料結構之棧與佇列的應用(2)
輸入一個表示式,表示式中包括三種括號“()”、“[]”和“{}”,判斷該表示式的括號是否匹配。 #include<stdio.h> #include<stdlib.h> #de
資料結構之棧go言語實現
package main import ( "fmt" "os" ) type Node struct { val int pNode *Node } type Stack struct
資料結構之棧結構
資料結構之棧結構 棧結構:線性結構。從資料的儲存結構來進一步劃分,棧結構包括兩類: 順序棧結構:使用一組地址連續的記憶體單元依次儲存棧中的資料;