?? 棧.txt
字號:
#include "stdio.h"
#include "alloc.h"
#include "bios.h"
#include "conio.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
typedef int Status;
#define Init_Size 100
#define INCR 20
typedef int ElemType;
typedef struct
{ElemType *Elem;
int Top;
int StackSize;
}SqStack;
Status InitStack(SqStack &S)
{ S.Elem=(ElemType *)malloc(Init_Size*sizeof(ElemType));
if(!S.Elem) return OVERFLOW;
S.Top=0;
return OK;
}
Status GetTop(SqStack S, ElemType &e)
{if (S.Top==0) return ERROR;
e=S.Elem[S.Top-1];
return OK;
}
Status Push(SqStack &S, ElemType e) /*入棧*/
{ if(S.Top==S.StackSize)
{ S.Elem=(ElemType*)malloc((S.StackSize+INCR)*sizeof(ElemType));
if(!S.Elem) return(OVERFLOW);
S.StackSize+=INCR;
}
S.Elem[S.Top++]=e;
return OK;
}
Status Pop(SqStack &S,ElemType &e) /*出棧*/
{if (!S.Top)
{printf("stack is empty when poping\n");return(ERROR);}
e=S.Elem[--S.Top];
return OK;
}
void StackOutput(SqStack S) /*遍歷棧并且輸出*/
{ int i;
for(i=0;i<S.Top;i++)
printf("%d ",S.Elem[i]);
printf("\n");
}
int StackLength(SqStack S) /*求棧長度*/
{return S.Top;}
Status StackEmpty(SqStack S) /*棧的判空*/
{if (S.Top) return FALSE;
else return TRUE;}
Status DestroyStack(SqStack S) /*銷毀棧*/
{free(S.Elem);
return OK;}
void ClearStack(SqStack &S) /*清空棧*/
{S.Top=NULL;}
main()
{ SqStack S;
ElemType e;
int i;
clrscr();
InitStack(S);
for(i=1;i<=5;i++) Push(S,2*i+1);
if (!StackEmpty(S)) printf("\nNot Empty with Stack");
printf("\nStack Length=%d\n",StackLength(S));
StackOutput(S);
Pop(S, e); StackOutput(S);
Push(S,111); StackOutput(S);
Push(S,222); StackOutput(S);
Pop(S, e); StackOutput(S);
ClearStack(S);
if (StackEmpty(S)) printf ("Empty with the Stack");
DestroyStack(S);
getch();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -