資料結構(棧 建立一個棧,入棧再出棧)

來源:互聯網
上載者:User

建立一個棧,入棧再出棧。

#include<iostream>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW -2#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0using namespace std;typedef int SElemType;typedef struct{SElemType *base;SElemType *top;int stacksize;}SqStack;typedef int Status;Status InitStack(SqStack&S){S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base) exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status Push(SqStack &S,SElemType e) { /* 插入元素e為新的棧頂元素 */   if(S.top-S.base>=S.stacksize) /* 棧滿,追加儲存空間 */   {      S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));     if(!S.base)       exit(OVERFLOW); /* 儲存分配失敗 */     S.top=S.base+S.stacksize;     S.stacksize+=STACKINCREMENT;   }   *(S.top)++=e;   return OK; } Status Pop(SqStack &S,SElemType &e) { /* 若棧不空,則刪除S的棧頂元素,用e返回其值,並返回OK;否則返回ERROR */   if(S.top==S.base)     return ERROR;   e=*--S.top;   return OK; } Status StackEmpty(SqStack S) { /* 若棧S為空白棧,則返回TRUE,否則返回FALSE */   if(S.top==S.base)     return TRUE;   else     return FALSE; }int main(){SqStack S;SElemType a,e;InitStack(S);cout<<"input some integer(ctrl+z to end):\n";while(cin>>a){Push(S,a);}cout<<"入棧,再出棧後:"<<endl;while(!StackEmpty(S)){Pop(S,e);cout<<e<<" ";}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.