程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> const-C++用類對堆棧的操作,請寫詳細點

const-C++用類對堆棧的操作,請寫詳細點

編輯:編程綜合問答
C++用類對堆棧的操作,請寫詳細點

class STACK{
int *const elems; //申請內存用於存放棧的元素
const int max; //棧能存放的最大元素個數
int pos; //棧實際已有元素個數,棧空時pos=0;
public:
STACK(int m); //初始化棧:最多m個元素
STACK(const STACK&s); //用棧s拷貝初始化棧
int size ( ) const; //返回棧的最大元素個數max
int howMany ( ) const; //返回棧的實際元素個數pos
STACK& push(int e); //將e入棧,並返回棧
STACK& pop(int &e); //出棧到e,並返回棧
STACK& assign(const STACK&s); //賦s給棧,並返回被賦值的棧
void print( ) const; //打印棧
~STACK( ); //銷毀棧
};

怎麼寫函數聲明,謝謝了

最佳回答:


函數聲明不都有了麼?你該寫函數實現啦。

參考代碼

/**
•<!--
•File : stack.h
•Author : fancy
•Email : [email protected]
•Date : 2013-02-03
•--!> */ #include #include #include #define Element char #define INIT_SIZE 10 #define INCREMENT_SIZE INIT_SIZE / 2

typedef struct TStack {
Element *base;
Element *top;
int size;
} *Stack;

//棧的構造器,創建空棧
void stackConstructor(Stack &stack){
stack->base = (Element *)malloc(INIT_SIZE * sizeof(Element));
if(!stack->base){
printf("\n為棧分配內存空間失敗!\n");
exit(0);
}
stack->top = stack->base; //空棧 top == base
stack->size = INIT_SIZE;
}

//是否為空棧
bool isEmpty(Stack stack){
if(stack->top == stack->base){
return true;
}
return false;
}

//壓棧
bool push(Stack &stack, Element e){
if(stack->top - stack->base >= stack->size){ //棧滿
stack->base = (Element *)realloc(stack->base, (stack->size + INCREMENT_SIZE) * sizeof(Element));
if(!stack->base){
printf("\n為棧擴展內存空間失敗!\n");
return false;
}
stack->top = stack->base + stack->size;
stack->size += INCREMENT_SIZE;
}
*stack->top++ = e;
return true;
}

//彈棧
Element pop(Stack stack){
if(isEmpty(stack)){
printf("\n棧為空,彈棧操作失敗!\n");
return ' ';
}
return *--stack->top;
}

/**
•<!--
•File : Stack.cpp
•Author : fancy
•Email : [email protected]
•Date : 2013-02-03
•--!> */ #include "stack.h"

int main() {
Stack stack;
stackConstructor(stack);
push(stack, 'f');
push(stack, 'a');
push(stack, 'n');
push(stack, 'c');
push(stack, 'y');
printf("%c", pop(stack));
printf("%c", pop(stack));
printf("%c", pop(stack));
printf("%c", pop(stack));
printf("%c", pop(stack));
//output[result]: ycnaf
return 0;

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved