栈 和 双端栈:
出入栈跟单链表的头插法基本是一样的 ,不过对头插法有了更深的理解 :
表头是不动的,初始指向空,插入时,新建的节点真的就在表头与NULL之间插入,以后再插入的时候都是在表头与第一个节点之间插入的。可以参考https://blog.csdn.net/DREAM_yao/article/details/104759320 链表头插法
/*链栈的进栈和出栈*/
#include<stdio.h>
#include<iostream>
using namespace std;
struct Stack
{
int data;
Stack *nex;
};
/*相当于头插法*/
void push_stack(Stack *stack1,int x)
{
Stack *temp = new Stack;
temp->data=x;
temp->nex=stack1->nex;
stack1->nex=temp;
}
void pop_stack(Stack *stack1)
{
stack1=stack1->nex;
while(stack1)
{
printf("%d
",stack1->data);
stack1=stack1->nex;/*出栈*/
}
}
int main()
{
Stack *stack1 = new Stack;
stack1->nex=NULL;
int x;
for(int i=1; i<=5; i++)
{
scanf("%d",&x);
push_stack(stack1,x);
}
pop_stack(stack1);
return 0;
}