赞
踩
栈的底层数据结构可以是数组,也可以是链表,用链表实现栈,理论上是无限大的
下面是链栈的实现代码
- #include<stdbool.h>
- #include<stdlib.h>
- typedef int datatype;
-
- //Link Stack 实现顺序栈,使用链表来实现
-
- // struct LinkList
- // {
- // datatype data;
- // struct LinkList *next;
- // };
-
- struct stack
- {
- datatype data;
- struct stack *next;
- };
-
- typedef struct stack Stack;
- //创建栈
- Stack *s;
- //初始化栈
- void init()
- {
- s=NULL;
- }
-
- //判断栈是否为空
- bool Empty()
- {
- if(s==NULL)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- //判断栈是否已满了
- // void full(Stack *s)
- // {
- // if(s->top==realsize-1)
- // {
- // realsize++;
- // s->data=(datatype *)realloc(s->data,realsize);
- // }
- // }
-
- //入栈
- void Push(datatype element)
- {
- Stack *p = (Stack *)malloc(sizeof(Stack));
- p->data=element;
- p->next=s;
- s=p;
- }
-
- //出栈
- void Pop()
- {
- if(!Empty(s))
- {
- s=s->next;
- }
- else
- {
- printf("栈空\n");
- }
- }
-
- //取栈顶元素
- datatype Top()
- {
- if(!Empty(s))
- {
- return s->data;
- }
- else
- {
- printf("栈空\n");
- }
- }
-
- //销毁栈
- void Destroy()
- {
- free(s);//因该销毁每一个元素
- s=NULL;
- // free(s.data); //容易导致失败
- }
测试代码
- #include<stdio.h>
- #include "LinkStack.h"
- int main()
- {
- int i=0;
- // struct stack s;
- //初始化栈
- printf("\n###########初始化栈###########\n");
- init();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。