链表类型的栈结构

Posted laoduancode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表类型的栈结构相关的知识,希望对你有一定的参考价值。

import org.w3c.dom.Node;

import java.util.LinkedList;
import java.util.Scanner;

/**
* @author laoduan
* @create 2020-04-10-17:53
*/
public class LinkedListStackDemo {
public static void main(String[] args) {
LinkedListStack linkedListStack = new LinkedListStack();



String key = "";
boolean loop = true;
Scanner scanner = new Scanner(System.in);

while (loop){
System.out.println("------------------------");
System.out.println("show:显示栈");
System.out.println("exit:退出程序");
System.out.println("pop:出栈");
System.out.println("push:入栈 ");
System.out.println("输入你的选择 ");

key = scanner.next();
switch (key){
case "show":
linkedListStack.list();
break;
case "push":
System.out.println("请输入一个数");
int value = scanner.nextInt();
System.out.println("请输入数据");
String data = scanner.next();
MyNode myNode = new MyNode(value, data);
linkedListStack.push(myNode);
break;
case "pop":
try {
linkedListStack.pop();
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case "exit":
scanner.close();
loop=false;
break;
default:
break;

}

}
System.out.println("程序退出");



}
}

class LinkedListStack{
private int top=-1;

MyNode head = new MyNode(0,"");
public MyNode getHead(){
return head;
}


//入栈
public void push(MyNode myNode){
MyNode temp = head.next;
if(head.next==null){
head.next=myNode;
}else {
myNode.next=temp;
head.next=myNode;
}
top++;
}

//出栈
public MyNode pop (){
MyNode node = head.next;
head.next=node.next;
System.out.println("取出的栈顶数据是:"+node);
if(node==null){
System.out.println("链表为空");
}
return node;
}


public void list(){
if (head.next==null){
System.out.println("链表为空");
return;
}

MyNode temp = head.next;
while (true){
if(temp==null){
break;
}
System.out.println(temp);
//将temp后移
temp=temp.next;
}
}

}

class MyLinkedList{
MyNode head = new MyNode(0,"");
public MyNode getHead(){
return head;
}


public void add(MyNode myNode){
MyNode temp = head.next;
if(head.next==null){
head.next=myNode;
}else {
myNode.next=temp;
head.next=myNode;
}
}

public void show(){
if (head.next==null){
System.out.println("链表为空");
return;
}

MyNode temp = head.next;
while (true){
if(temp==null){
break;
}
System.out.println(temp);
//将temp后移
temp=temp.next;
}
}
}
class MyNode{
int no;
String data;
MyNode next;

public MyNode(int no,String data){
this.no=no;
this.data=data;
}

@Override
public String toString() {
return "{" +
"no=" + no +
", data=‘" + data + ‘‘‘ +
‘}‘;
}
}

以上是关于链表类型的栈结构的主要内容,如果未能解决你的问题,请参考以下文章

首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)

21-堆栈

数据结构一天速成

数据结构如何一天速成?

C 编程为链表类型结构分配空间

用于挂载管理复合类型的双向链表实现