📄 lstack.c
字号:
/*
* 作者:antigloss
* 最后修改:05-8-27 21:30
* 蚂蚁的 C/C++ 标准编程
* cpp.ga-la.com
*/
#include <stdlib.h>
#include "../header/lstack.h"
/* begin of destroy_stack 05-8-27 21:25 */
void destroy_stack( LStack *S ) /* 销毁栈 */
{
LinkList q;
while ( S->top ) {
q = S->top;
S->top = S->top->next; /* 修改栈顶指针 */
free( q ); /* 释放被删除的结点空间 */
}
S->length = 0;
} /* end of destroy_stack */
/* begin of init_stack 05-8-27 20:40 */
void init_stack( LStack *S ) /* 构造空栈 */
{
S->top = NULL; /* 栈顶指针初值为空 */
S->length = 0; /* 空栈中元素个数为 0 */
} /* end of init_stack */
/* begin of pop 05-8-27 21:15 */
int pop( LStack *S, int *e )
{ /* 若栈不空,则删除 S 的栈顶元素,用 e 返回栈顶元素的值。*/
LinkList q;
if ( !S->top ) {
return 0;
}
*e = S->top->data; /* 返回栈顶元素 */
q = S->top;
S->top = S->top->next; /* 修改栈顶指针 */
--S->length; /* 栈的长度减1 */
free( q ); /* 释放被删除的结点空间 */
return 1;
} /* end of pop */
/* begin of push 05-8-27 20:45 */
int push( LStack *S, int e )
{
/* 在栈顶之上插入元素 e 为新的栈顶元素 */
LinkList p = malloc( sizeof *p ); /* 建新的结点 */
if ( !p ) {
return 0; /* 存储分配失败 */
}
p->data = e;
p->next = S->top; /* 链接到原来的栈顶 */
S->top = p; /* 移动栈顶指针 */
++S->length; /* 栈的长度增1 */
return 1;
} /* end of push */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -