1. 程式人生 > 其它 >開發中常用棧簡潔操作

開發中常用棧簡潔操作

技術標籤:linuxc plus演算法

參考:棧基本詳解

#include<stdio.h>
#include<stdlib.h>
#define STACKSIZE 100
/*定義堆疊*/
typedef struct{
 char data[STACKSIZE];
 int top;
}Stack;

static void InitStack(Stack *s)
{
   s->top=0;
}
/*判斷棧是否為空*/
static int stNULL(Stack *s)
{
 if(s->top==0)
 {
  return 1;
 }
 else
 {
   return 0;
 }
}

/*入棧操作*/
static void stPush(Stack *s,char x)
{

  if(s->top==STACKSIZE)
  {
  }
  else
  {
   s->top=s->top+1;
   s->data[s->top]=x;
   printf("%c 入棧\n",x);
  }
}

/*出棧操作*/
static char stPop(Stack *s)
{
  char t;
  if(!stNULL(s))
  {
   t=s->data[s->top];
   s->top=s->top-1;
   printf("%c 出棧\n",t);
  }
   else
  {
   t=0;
  }
  return t;
}

/*獲取棧頂元素*/
static char stGetTop(Stack *s)
{
  char t;
  if(!stNULL(s))
  {
   t=s->data[s->top];
   printf("%c 棧頂元素\n",t);
  }
  else
  {
   t=0;
  }
  return t;
}
int main()
{
	Stack *stack=(Stack *)malloc(sizeof(Stack));
	InitStack(stack);
	stPush(stack,'1');
	stPush(stack,'2');
	stPush(stack,'3');
	stPush(stack,'4');
	stPush(stack,'5');
	stGetTop(stack);
	stPop(stack);
	stPop(stack);
	stPop(stack);
	stPop(stack);
	stPop(stack);
}
[email protected]:~$ gcc -o stack stack.c
[email protected]:~$ ./stack 
1 入棧
2 入棧
3 入棧
4 入棧
5 入棧
5 棧頂元素
5 出棧
4 出棧
3 出棧
2 出棧
1 出棧
[email protected]:~$