码迷,mamicode.com
首页 > 其他好文 > 详细

链表类型的栈结构

时间:2020-04-10 19:41:26      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:print   top   can   lin   pre   message   his   rgs   creat   

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:入栈\n");
System.out.println("输入你的选择\n");

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 + ‘\‘‘ +
‘}‘;
}
}

链表类型的栈结构

标签:print   top   can   lin   pre   message   his   rgs   creat   

原文地址:https://www.cnblogs.com/laoduancode/p/12675603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!