c语言中有关于栈和队列的函数库吗,关于C语言中栈和队列的选择题

匿名用户

1级

2011-08-23 回答

/*链栈的结构定义*/

typedef struct {

SLink top;    // 栈顶指针

int length;   // 栈中元素个数

}Stack;

void InitStack ( Stack &S )

{

// 构造一个空栈 S

S.top = NULL;   // 设栈顶指针的初值为"空"

S.length = 0;   // 空栈中元素个数为0

} // InitStack

/*能否将链栈中的指针方向反过来,从栈底到栈顶?

不行,如果反过来的话,删除栈顶元素时,为修改其前驱指针,需要从栈底一直找到栈顶。*/

void Push ( Stack &S, ElemType e )

{

// 在栈顶之上插入元素 e 为新的栈顶元素

p = new LNode;   // 建新的结点

if(!p) exit(1);  // 存储分配失败

p -> data = e;

p -> next = S.top; // 链接到原来的栈顶

S.top = p;     // 移动栈顶指针

++S.length;     // 栈的长度增1

} // Push

/*在链栈的类型定义中设立"栈中元素个数"的成员是为了便于求得栈的长度。*/

bool Pop ( Stack &S, SElemType &e )

{

// 若栈不空,则删除S的栈顶元素,用 e 返回其值,

// 并返回 TRUE;否则返回 FALSE

if ( !S.top )

return FALSE;

else

{

e = S.top -> data;   // 返回栈顶元素

q = S.top;

S.top = S.top -> next; // 修改栈顶指针

--S.length;       // 栈的长度减1

delete q;       // 释放被删除的结点空间

return TRUE;

}

} // Pop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值