如何轻松使用 C 语言实现一个栈?( 二 )


int StackPush(struct Stack *stack,int data){struct List *tmp = (struct List *)malloc(sizeof(struct List));tmp->data = https://www.isolves.com/it/cxkf/yy/C/2019-11-04/data;tmp->next = stack->head->next;stack->head->next = tmp;stack->size++;//printf("push:%d n",data);return 0;}4.用数组来实现一个栈
数组本身是一种数据结构,使用数组实现一个栈也是非常简单方便的,大家请看 。
#include "stdio.h"#include "stdlib.h"/*栈的大小*/#define LENGHT (100)struct Stack{int stack_array[LENGHT];unsigned int size;//栈动态长度};struct Stack * StackInit(void){struct Stack *stack = ;stack = (struct Stack*)malloc(sizeof(struct Stack));stack->size = 0;return stack;}int StackPush(struct Stack *stack,int data){if(stack->size >= LENGHT){printf("stack is fulln");return (-1);}stack->stack_array[stack->size] = data;stack->size++;//printf("push:%d size:%dn",data,stack->size);return 0;}int IsStackEmpty(struct Stack *stack){/*如果头指针指向下一个为空,说明栈为空*/if(stack->size == 0)return 1;elsereturn 0;}int StackPop(struct Stack *stack,int *data){stack->size--;if(IsStackEmpty(stack))return -1;*data = https://www.isolves.com/it/cxkf/yy/C/2019-11-04/stack->stack_array[stack->size];//printf("pop:%d size:%dn",*data,stack->size);return 0;}int main(void){int i = 0;struct Stack *stack = ;stack = StackInit;for(i = 0;i<20;i++){StackPush(stack,i);}for(i = 0;i<21;i++){int data = 0;StackPop(stack,&data);printf("%d n",data);}printf("n");return 0;}5.总结
既然有栈,就会有和栈不一样的数据结构,有一种数据结构叫做队列,栈的数据结构特点是先进后出,队列的数据结构特点是先进先出,有点意思,栈和队列做驱动的同学很少需要自己写代码实现,正常情况下都是SDK集成了方法,直接调用接口就好了,但是写应用的同学,经常要自己实现一个栈或者队列,特别是大企业面试,这些算是非常基础的题目,最好是闭着眼睛就能写出来的那种 。
【End】

【如何轻松使用 C 语言实现一个栈?】


推荐阅读