push/pop原理,簡潔、方便、直觀地代碼

分類:編程 時間:2017-03-26

#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 = http://www.xuebuyuan.com/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;

??
Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad