#include<stdio.h>
#include<stdlib.h>
typedef int elementType;
typedef struct Link_Stack{
Link_Stack *next;
elementType data;
} Stack;
Stack * init(){
Stack *stack = (Stack *)malloc(sizeof(Stack));
if(stack!=NULL){
printf("栈初始化成功\n");
return stack;
} printf("空间满了\n");
return NULL;
}
bool isEmpty(Stack *stack){
if(stack->next==NULL)
return true;
return false;
}
void push(Stack *stack,elementType x){
Stack *p = (Stack *)malloc(sizeof(Stack));
if(p!=NULL){
p->data=x;
p->next=stack->next;
stack->next=p;
printf("插入成功\n");
}
return;
}
void pop(Stack *stack){
if(stack->next==NULL)
{
printf("栈已经空了\n");
return ;
}
Stack *p=stack->next;
stack->next=p->next;
printf("出栈:%d\n",p->data);
free(p);
}
int main(){
Stack *st=init();
printf("%d\n",isEmpty(st));
for(int i=0;i<10;i++)
push(st,i+1);
for(int i=0;i<10;i++)
pop(st);
return 0;
}
java实现
public class Node_stack <E> {
Node_stack next=null;
E data;
Node_stack(E data){
this.data=data;
}
}
public class Link_stack <E>{
private Node_stack<E> node=null;
public Link_stack(){
}
//判断是否为空
public boolean isEmpty(){
return node ==null;
}
//进栈
public void push(E data){
Node_stack<E> newstack=new Node_stack<>(data);
newstack.next=node;
node=newstack;
System.out.println("插入成功");
}
//出栈
public void pop(){
if(this.isEmpty()){
System.out.println("栈已经空了");
return;
}
E data=node.data;
node=node.next;
System.out.println(data);
}
public static void main(String[] args) {
Link_stack stack = new Link_stack();
System.out.println(stack.isEmpty());
for (int i=0;i<4;i++)
stack.push(i+1);
System.out.println(stack.isEmpty());
for (int i=0;i<5;i++)
stack.pop();
}
}