?? stack.c
字號:
#include "stdafx.h"
Status InitStack(stack* s)
{
//構造一個空棧
s->base = (SElemType*) malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(s->base==NULL) return ERROR;
s->top = s->base ; //表示空棧
s->stacksize = STACK_INIT_SIZE ;
return OK;
}
Status DestroyStack(stack* s)
{
//銷毀棧s,s不再存在
free(s->base);
s->top =s->base =NULL;
free(s);
return 0;
}
Status ClearStack(stack* s)
{
//把棧s清空
s->top = s->base ;
return OK;
}
int StackEmpty(stack* s)
{
//若棧s為空,則返回true, 否則返回false
if(s->top == s->base) return 1;
return 0;
}
int StackLength(stack* s)
{
//返回s的元素的個數,即棧的長度
return s->top - s->base;
}
Status GetTop(stack* s,SElemType* e)
{
// 若棧不空,則用e返回s的棧頂元素,操作成功返回0 ,失敗返回-1
if(s->top==s->base) return ERROR;
*e= *(s->top-1);
return OK;
}
Status Push(stack* s,SElemType e)
{//插入元素e為新棧頂的元素
if(s->top-s->base >= s->stacksize)
{ //棧滿,追加存儲空間
s->base = (SElemType* ) realloc(s->base,(s->stacksize+STACKINCRAMENT)*sizeof(SElemType));
if(s->base==NULL) return ERROR;
s->top = s->base +s->stacksize;
s->stacksize += STACKINCRAMENT;
}
*(s->top)++ = e;
return OK;
}
Status Pop(stack* s,SElemType* e)
{ //若棧不空,則刪除s的棧頂元素,用e返回其值
//操作成功返回0 ,失敗返回-1
if(s->top==s->base) return ERROR;
*e = *(--s->top);
return OK;
}
Status StackTraverse(stack* s)
{
//從棧頂依次對棧中的每一個元素進行遍歷
SElemType* temp = s->top;
for(temp--;temp!=s->base-1;temp--)
{
printf("%d ",*temp);
}
printf("\n");
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -