首页 > 学院 > 开发设计 > 正文

链栈与链表间的关系

2019-11-06 06:09:04
字体:
来源:转载
供稿:网友

    在实现链栈功能时,发现链栈的数据结构与链表的基本操作没有太大区别,但其最重要功能为先入后出,那么链栈为什么能实现这样的功能呢

    以下为链栈的压栈弹栈过程

---------------------------------------------------------------------------

void Stack::Push(DataType e)

{StackNode *p;p=new StackNode;p->data=e;p->next=top->next;top->next=p;}DataType Stack::Pop(){StackNode *p;if(IsEmpty()){cout<<""<<endl;}else{p=top->next;DataType m=p->data;top->next=p->next;delete p;return m;}

}

    以下为链表的从头结点插入与从尾部结点插入

-------------------------------------------------------------------------

void LinkList::Creat(DataType a[],int n){Node *q=head;Node *p;int k=0;while(k<n){p=new Node;p->data=a[k];p->next=q->next;q->next=p;q=p;k++;}}void LinkList::Creat1(DataType a[],int n) //头部插入{Node *p;int k=n-1;while(k>=0){p=new Node;p->data=a[k];p->next=head->next;head->next=p;n--;}}

    对比链栈和链表的创建和删除过程可以发现,链栈的压栈过程和链表的从头结点插入实现方式一样,这样就不难解释为什么链栈能够实现先入后功能。后插入的结点距离top结点近,在弹栈过程中先弹出。因此实现了先入后出功能


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表