数据结构---栈C语言实现

来源:互联网 发布:数据逻辑设计的任务 编辑:程序博客网 时间:2024/03/29 20:49
#include <stdio.h> #include <stdlib.h>#define uchar unsigned char #define uint  unsigned int #define SIZE  1024static int  stack[SIZE] = {0};static int index = 0 ; int Is_Empty(void) ; int Is_Full(void) ;int push(int value) ;int pop(int *value) ;int top(int *value) ;int main(void){    int i ;    int buffer[5] = {1,2,3,4,5} ;    printf("入栈前:\n");     for(i = 0 ; i < 5 ; i++)    {        printf("stack[%d]=%d\n",i,stack[i]);        }     int temp ;     for(i = 0 ; i < 5 ; i++)    {        push(buffer[i]);        }    printf("入栈后:\n");    for(i = 0 ; i < 5 ; i++)    {        printf("stack[%d]=%d\n",i,stack[i]);        }    printf("出栈后:\n");    while(1)    {        if(pop(&temp))            break ;        printf("%d\n",temp);    }      printf("top:%d\n",top(&temp));        getchar();return 0 ;}int Is_Empty(void){    //判断栈是否为空 return  index == 0 ; }int Is_Full(void){    //判断栈是否已经满了 return  index == SIZE -1 ; }int push(int value){    //入栈,先判断是否已经满了,满了就返回1 if(Is_Full())return 1 ; //否则就将数值入栈 stack[index] = value ; index++ ; return 0 ; }int pop(int *value){    //出栈,判断是否为空,为空就返回1 if(Is_Empty())return 1 ;     //否则出栈 *value = stack[--index];return 0 ; }int top(int *value){    //判断栈顶的值 if(Is_Empty())return 1 ; *value = stack[index-1];return 0 ; }

运行结果:

入栈前:

stack[0]=0

stack[1]=0

stack[2]=0

stack[3]=0

stack[4]=0

入栈后:

stack[0]=1

stack[1]=2

stack[2]=3

stack[3]=4

stack[4]=5

出栈后:

5

4

3

2

1

top:1

0 0
原创粉丝点击