您的位置:首页 > 其它

栈的链式存储结构及其基本运算的实现

2014-08-05 22:52 417 查看
栈的链式存储结构及其基本运算的实现

采用链式存储的栈,规定栈的所有操作都在单链表的表头进行。

节点*p进栈的操作是在头结点*s之后插入节点*p,出栈的操作是取出头结点*s之后的节点的data值,并将该节点删除。

(1)初始化栈

void InitStack(LiStack *&s)

{

s=(LiStack *)malloc(sizeof(LiStack));

s-next=null;

}

(2)销毁栈 DestroyStack(s)

void DestroyStack(LiStack *&s)

{

LiStack *p=s,*q=s->next;

while(q!=null)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

(3)判断栈是否为空StackEmpty(s)

bool StackEmpty(LiStack *s)

{

return (s->next==null);

}

(4)进栈Push(s,e)

void Push(LiStack *&s,ElemType e)

{

LiStack *p;

p=(LiStack *)malloc(sizeof(Listack));

p->data=e;

p->next=s->next;

s->next=p;

}

(5)出栈Pop(s,e)

bool Pop(LiStack *&s,ElemType &e)

{

LiStack *p;

if(s->next==null)

return false;

p=s->next;

e=p->data;

s->next=p->next;

free(p);

return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: