链表实现堆栈

#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();
}

}

转载于:https://my.oschina.net/u/2511906/blog/3086063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值