C语言单链表实现栈
发布日期:2021-06-30 18:42:57 浏览次数:3 分类:技术文章

本文共 1225 字,大约阅读时间需要 4 分钟。

#include "stdio.h"#include "stdlib.h"struct List{
int data; struct List * next;}; struct Stack{
struct List *head; int size;};struct Stack * StackInit(void){
struct Stack *stack = NULL; stack = (struct Stack*)malloc(sizeof(struct Stack)); stack->head = (struct List *)malloc(sizeof(struct List)); stack->head->next = NULL; stack->size = 0; return stack;}int StackPush(struct Stack *stack,int data){
struct List *tmp = (struct List *)malloc(sizeof(struct List)); tmp->data = data; tmp->next = stack->head->next; stack->head->next = tmp; stack->size++; //printf("push:%d \n",data); return 0;}int IsStackEmpty(struct Stack *stack){
/*如果头指针指向下一个为空,说明栈为空*/ if(stack->head->next == NULL) return 1; else return 0;}int StackPop(struct Stack *stack,int *data){
struct List *tmp = NULL; if(IsStackEmpty(stack)) return -1; tmp = stack->head->next; *data = tmp->data; stack->head->next = tmp->next; stack->size--; free(tmp); //printf("pop:%d \n",*data); return 0;}int main(void){
int i = 0; struct Stack *stack = NULL; stack = StackInit(); for(i = 0;i<5;i++) {
StackPush(stack,i); } for(i = 0;i<5;i++) {
int data = 0; StackPop(stack,&data); printf("%d ",data); } printf("\n"); return 0;}

在这里插入图片描述

转载地址:https://linus.blog.csdn.net/article/details/102796151 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C语言系列文章之#和##
下一篇:你知道Linux里D进程会搞事吗?

发表评论

最新留言

很好
[***.229.124.182]2024年05月01日 01时05分40秒