1. 程式人生 > >資料結構之棧複雜資料應用實現(2)

資料結構之棧複雜資料應用實現(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

資料結構結構

資料結構之棧結構     棧結構:線性結構。從資料的儲存結構來進一步劃分,棧結構包括兩類:        順序棧結構:使用一組地址連續的記憶體單元依次儲存棧中的資料;