2019独角兽企业重金招聘Python工程师标准>>>
/** stack3.c** Created on: Dec 6, 2012* Author: fsxchen* 链式结构的栈*/
#include
#include
#include
#include typedef struct StackNode //节点结构体
{int data; //存放数据struct StackNode *next; //指向下一个节点
}StackNode, *LinkStackPtr;typedef struct LinkStack //结构 结构体
{LinkStackPtr top; //指向栈顶的元素int count;
}LinkStack;void InitStack(LinkStack *s)
{s->top = NULL;s->count = 0;
}bool IsEmpty(LinkStack *s)
{if( s->top == NULL)return true;elsereturn false;
}void DestroyStack(LinkStack *s)
{LinkStackPtr p;while(s->top != NULL){p = s->top->next;free(s->top);s->top = p;}
}void Push(LinkStack *s)
{int val;printf("请输入你要入栈的值");scanf("%d", &val);LinkStackPtr p = (LinkStackPtr)malloc(sizeof(StackNode));p->data = val;p->next = s->top; //在当前栈顶加上一个元素,作为新的栈顶s->top = p;s->count++;
}int PopStack(LinkStack *s)
{if(IsEmpty(s)){printf("链表为空");return -1;}int i;i = s->top->data;free(s->top);s->top = s->top->next ;s->count--;return i;
}int main()
{int i;LinkStack Test;InitStack(&Test);Push(&Test);Push(&Test);printf("%d\t\t",Test.count );i = PopStack(&Test);printf("%d\t\t %d", Test.count, i );return 0;
}
考虑到,指向栈顶的元素的作用和头指针作用一样,所以这个链表,我们并没有给它头指针!