链式栈的插入与删除算法

  • 2017-10-21 14:37:34
  • 3,519 次阅读
  • 稿源:天马行空

链式栈在设计时要注意的问题是判断栈是否为空,链栈不存在栈满的情况(假定内存无限大的情况不存在)。现在要求设计一个用不带头结点的单链表存储栈,将一个新结点插入到栈顶中,然后将其删除的算法。具体算法内容如下:
①链式栈插入(push)参考图:

LinkStackPush
②链式栈插入(push)代码:
void push(LNode *&lst,int x)
{

LNode *p;
p=(LNode *)malloc(sizeof(LNode));
p->next=NULL;
p->data=x;
p->next=lst.top;
lst.top=p;

}
③链式栈删除(pop)参考图:

LinkStackPop
④链式栈删除(pop)代码:
int pop(LNode *&lst,int &x)
{

LNode *p;
if(lst.top==NULL)
return 0;
p=lst.top;
x=p->data;
lst.stop=p->next;
free(p);
return 1;

}

喜欢 0

文章评论 (0)

表情

大眼 可爱 大笑 坏笑 害羞 发怒 折磨 快哭了 大哭 白眼 晕 流汗 困 腼腆 惊讶 憨笑 色 得意 骷髅 囧 睡觉 眨眼 亲亲 疑问 闭嘴 难过 淡定 抗议 鄙视 猪头