现在的位置: 首页 > 综合 > 正文

push/pop原理,简洁、方便、直观地代码

2017年03月26日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

#include <stdio.h>

#define STACK_NR  5
static int stack[STACK_NR];
static int index;

static int is_empty(void)
{
  return !index;
}
static int is_full(void)
{
 return index >= STACK_NR;
}

int push(int data)
{
 if(is_full()) {
  return -1;
 }
 stack[index++] = data;
 return 0;
}

int pop(int *data)
{
 if(is_empty()) {
  return -1;
 }
 *data = stack[--index];
 return 0;
}

int main(void)
{
 int arr[] = {2013, 12, 13, 10, 36};
 int i;
 int data;
 int ret;
 
 printf("push stack of data:"); 
 for(i = 0; i < sizeof(arr)/sizeof(*arr); ++i) {
  printf("%d ", arr[i]);
 }
 printf("\n");
 for(i = 0; i < sizeof(arr)/sizeof(*arr); ++i) {
  ret = push(arr[i]);
  if(ret == -1) {
   printf("push stack is succeed(MAX 4 data) and stack full!\n");
   break;
  }
 }
 
 printf("push data(the arrange of ways from top to bottom):\n");
 printf("->\n");
 while(1) {
  ret = pop(&data);
  if(ret == -1) {
   printf("\npop stack is finish and stack empty!\n");
   break;
  }
  printf("  [%d]\n", data);
 }

 printf("\n");
 return 0;



抱歉!评论已关闭.