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

简介: #include #include #define uchar unsigned char #define uint unsigned int #define SIZE 1024static int stack[SIZE] = {0};static int index =...
#include <stdio.h> 
#include <stdlib.h>
#define uchar unsigned char 
#define uint  unsigned int 
#define SIZE  1024
static 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

目录
相关文章
|
3天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
11天前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
16 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
3天前
|
存储 算法 C语言
【趣学C语言和数据结构100例】
《趣学C语言和数据结构100例》精选5个编程问题,涵盖求最大公约数与最小公倍数、字符统计、特殊序列求和及阶乘计算等,通过实例讲解C语言基础与算法思维,适合初学者实践学习。
|
11天前
初步认识栈和队列
初步认识栈和队列
35 10
|
5天前
数据结构(栈与列队)
数据结构(栈与列队)
11 1
|
10天前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
37 1
|
6天前
【数据结构】-- 栈和队列
【数据结构】-- 栈和队列
9 0
|
11天前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式
|
11天前
|
存储 C语言
栈和队列题目练习
栈和队列题目练习
12 0
|
18天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
84 64