一、主文件
#include"D:\学习\算法与数据结构\常用代码\linkstack.h"
void changestack(LinkNode *&top)
{
LinkNode *s;
s=new LinkNode;
InitStack(s);
LinkNode *p=top;
while(p!=NULL)
{
Push(s,p->data);
p=p->next;
}
top=s;
delete(s);
}
int main()
{
LinkNode *l;
InitStack(l);
Push(l,'a');
Push(l,'b');
Push(l,'c');
Push(l,'d');
Push(l,'e');
DispStack(l);
changestack(l);
DispStack(l);
}
二、头文件
#include<iostream>
using namespace std;
typedef char ElemType;
struct LinkNode
{
ElemType data;
struct LinkNode *next;
};
void InitStack(LinkNode *&top)
{
top=NULL;
}
void Push(LinkNode *&top,ElemType x)
{
LinkNode *p;
p=new LinkNode;
p->data =x;
p->next=top;
top=p;
}
void Pop(LinkNode *&top)
{
LinkNode *p;
if(top==NULL)
{
cout<<"空栈,没有元素"<<endl;
}
else
{
p=top;
cout<<"出栈元素为:"<<p->data<<endl;
top=top->next;
delete p;
}
}
void GetTop(LinkNode *top)
{
if(top==NULL)
{
cout<<"栈空,没有元素"<<endl;
}
else
{
cout<<"栈顶元素为:"<<top->data <<endl;
}
}
void StackEmpty(LinkNode *top)
{
top-=NULL;
if(top==NULL)
{
cout<<"栈为空"<<endl;
}
else
{
cout<<"栈不空"<<endl;
}
}
void DispStack(LinkNode *top)
{
LinkNode *p=top;
while(p!=NULL)
{
cout<<p->data;
p=p->next;
}
cout<<endl;
}