/**************************
栈的链式存储结构
功能代码包含:
1)链式栈的数据结构定义
2)链栈的初始化
3)往链式栈中插入元素(push)
4)删除链式栈顶元素(pop)
注意:代码不进行debug,只实现基本功能
Author:tmw
date:2018-3-9
**************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define error 65530
/**链式栈数据结构定义**/
typedef struct StackNode
{
int data;
struct StackNode *next;
}StackNode,*LinkStackPtr;
typedef struct LinkStack
{
LinkStackPtr top;
int length;
}LinkStack;
bool initLinkStack( LinkStack *S )
{
S = (LinkStack*)malloc(sizeof(LinkStack));
if(!S)
return false; //栈空间分配失败
S->length = 0;
S->top = NULL;
return true;
}
/**往链式栈中插入元素e**/
void linkStack_push( LinkStack *S, int e )
{
/**栈的链式存储结构中,栈满的情况不存在,所以在push元素的时候不用考虑这层**/
LinkStackPtr p;
p = (LinkStackPtr)malloc(sizeof(StackNode));
p->data = e;
p->next = S->top;
S->top = p;
S->length++;
}
/**删除链式栈顶元素(pop),并返回**/
int linkStack_pop( LinkStack *S )
{
/**删除栈顶元素,应先判断栈是否为空**/
if( S->top == NULL )
return error;
LinkStackPtr p;
p = S->top;
int e = p->data;
S->top->next = S->top; //栈顶指针下移一位
free(p);
S->length--;
return e;
}
int main()
{
printf("Hello world!\n");
return 0;
}
梦想还是要有的,万一实现了呢~~~ヾ(◍°∇°◍)ノ゙