我按照清华大学出版社的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();
}
}
}

解决方案 »

  1.   


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

  2.   

    \[ code=Java \] 代码放里面就可以了\[ /code \]
      

  3.   

    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;
    Node tail;//Boolean i;
    LinkList()
    {
    mNode=null;
    tail=null;//i=false;
    }
    LinkList(char data)
    {
    mNode=new Node(data);
    tail=mNode;//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);
    tail=mNode;
    }
    else
    {
    Node node=new Node(data);
    tail.setNext(node);
    tail=node;
    }
    }
    }