#include <stdio.h>
#include <stdlib.h>
/**< 链栈的实现 */
/**< 栈结点实现 */
typedef struct
{
int data;
struct StNode* next;
}StNode;
/**< 栈结构实现 */
typedef struct
{
StNode* top;
StNode* base;
}Stack;
/**< 初始化栈(初始化头结点,首尾指针分别指向头结点) */
void Init_Stack(Stack* q)
{
StNode* p;
p->data=NULL;
p->next=NULL;
q->top=p;
q->base=p;
}
/**< 栈判空 */
int Empty_Stack(Stack* p)
{
if(p->top==p->base)
return 1;
else return 0;
}
/**< 压栈 */
void Push_Stack(Stack* q,int Val)
{
StNode* p;
p->data=Val;
p->next=q->top->next;
q->top->next=p;
}
/**< 出栈 */
void Pop_Stack(Stack* q,int *Val)
{
if(Empty_Stack(q)==0)
{
StNode* b=q->top->next;
StNode* a;
*Val=b->data;
a=q->top->next;
q->top->next=b->next;
}
else;
}
/**< 打印栈顶元素 */
void GetTop_Stack(Stack* q)
{
StNode* a=q->top->next;
printf("%d",a->data);
}
int main()
{
Stack S;
Init_Stack(&S);
printf("Hello world!\n");
return 0;
}
链栈ADT的实现(C语言) 2018.3.13
最新推荐文章于 2022-08-01 11:47:15 发布