鏈表實現堆棧

#include<stdio.h>java

#include<stdlib.h>node

typedef int elementType;this

typedef struct Link_Stack{code

Link_Stack *next;

elementType data;

} Stack;element

Stack * init(){it

Stack *stack = (Stack *)malloc(sizeof(Stack));io

if(stack!=NULL){class

printf("棧初始化成功\n"); 

return stack;

} printf("空間滿了\n");next

return NULL;static

}

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

}

相關文章
相關標籤/搜索