java 建立单链表
我按照清华大学出版社的java语言与面向对象程序设计(第2版)写了一个程序建立单链表
但是程序运行的结果显示插入节点的顺序是逆序的,我想正序插入,不知道如何解决。我认为是LinkList类里面的insert()函数的问题,且出在Node next=mNode上,导致每次next都指向头结点,使插入的节点总是位于上次插入的节点之前,但不知道如何让插入的节点位于上次插入点之后,求高人解答,我的代码:
import java.io.*;
public class Link {
public static void main(String args[])
{
String s="";
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
s=br.readLine();
}catch(
IOException e){}
LinklistCheck(s);
}
public static void LinklistCheck(String s)
{
int i=1;
System.out.println("开始建立链表");
LinkList a=new LinkList();
for(i=0;i<s.length();i++)
a.insert(s.charAt(i));
//i++;
System.out.println("检验链表是否建立成功");
System.out.println(a.Display());
}
}
class Node
{
private char data;
private Node next;
Node()
{
data=' ';
next=null;
}
Node(char data)
{
this.data=data;
next=null;
}
Node(char data,Node next)
{
this.data=data;
this.next=next;
}
public char getData()
{
return data;
}
public void setNext(Node next)
{
this.next=next;
}
Node getNext()
{
return next;
}
}
class LinkList
{
Node mNode;
//Boolean i;
LinkList()
{
mNode=null;
//i=false;
}
LinkList(char data)
{
mNode=new Node(data);
//i=false;
}
public String Display()
{
Node next=mNode;
String s="";
while(next!=null)
{
s=s+next.getData()+" ";
next=next.getNext();
}
return s;
}
public void insert(char data) //将插入节点放在上次插入节点之后
{
Node next=mNode;
if(mNode==null)
{
mNode=new Node(data);
}
else
{
//mNode=new Node(data,mNode);
next.setNext(new Node(data,next.getNext()));
next=next.getNext();
}
}
}
------解决方案--------------------
Java code
import java.io.*;
public class Link {
public static void main(String args[]) {
String s = "";
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
s = br.readLine();
} catch (IOException e) {
}
LinklistCheck(s);
}
public static void LinklistCheck(String s) {
int i = 1;
System.out.println("开始建立链表");
LinkList a = new LinkList();
for (i = 0; i < s.length(); i++)
a.insert(s.charAt(i));
// i++;
System.out.println("检验链表是否建立成功");
System.out.println(a.Display());
}
}
class Node {
private char data;
private Node next;
Node() {
data = ' ';
next = null;
}
Node(char data) {
this.data = data;
next = null;
}
Node(char data, Node next){
this.data = data;
this.next = next;
}
public char getData() {
return data;
}
public void setNext(Node next) {
this.next = next;
}
Node getNext() {
return next;
}
}
class LinkList{
Node head;
Node tail;
// Boolean i;
LinkList() {
head = null;
tail = null;
// i=false;
}
LinkList(char data){
head = new Node(data);
tail = head;
// i=false;
}
public String Display(){
Node next = head;
String s = "";
while (next != null){
s += next.getData() + " ";
next = next.getNext();
}
return s;
}
public void insert(char data) // 将插入节点放在上次插入节点之后
{
if (tail == null){
head = new Node(data);
tail = head;
}else {
Node node = new Node(data);
tail.setNext(node);
tail = node;
}
}
}