#include<iostream>
using namespace std;
//栈的基本操作:测试栈是否为空栈(与链表测空相同的Im_empty),入栈(push),出栈(pop),输出栈顶元素(top)
//栈声明
typedef struct node
{
int data;
struct node *next;//这里千万要注意,小疏忽就可能造成大后果
}Node;
//push入栈(链表头插法)
Node *push(int n)
{
Node *head = new Node;
Node *p = new Node;
cin>>p->data;
head->next=p;
p->next=NULL;
Node *pre=p;
for(int i=1;i<n;i++)
{
Node *p=new Node;
cin>>p->data;
head->next=p;
p->next=pre;
pre=p;
}
return head;
}
//Im_empty
bool Im_empty(Node *head)
{
if(head->next==NULL) return true;
else return false;
}
//pop(出栈:头插法链表输出)
void pop(Node *head)
{
Node *p=head->next;
while(p!=NULL)
{
cout<<p->data<<' ';
p=p->next;
}
}
//返回栈顶元素
int top(Node *head)
{
Node *p=head->next;
cout<<p->data<<endl;
}
int main()
{
int n;
cin>>n;
Node *head=new Node;
head=push(n);
pop(head);
if(Im_empty(head)) cout<<"empty"<<endl;
else cout<<"NOT empty"<<endl;
top(head);
return 0;
}
11-23
5350
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交