【问题标题】:Putting Characters in Alphabetical Order in Nodes (Java)在节点中按字母顺序排列字符(Java)
【发布时间】:2015-04-11 02:22:40
【问题描述】:

我已经尝试弄清楚如何做到这一点大约 4 天了,但我就是无法理解这个概念。

主程序:

String answer = "y";  
        String n = null;  
        char nodePointer = ' ';  
        KeyboardReader reader = new KeyboardReader();  

        Node start = null;  
        Node last = null;  
        Node temp = null;  

do{  

                    while(start && !(temp < last->start)){  
                        last = start;    
                        start = start->last;  
                    }  
                    if(last == temp)  
                        temp = new Node(nodePointer,temp);  
                    else  
                        temp = new Node(nodePointer,start);  
                    while(temp != null){  
                        System.out.print(temp.letter);  
                        temp = temp.nodeptr;  
                    }
}while(answer.compareTo(n) == 0);  

构造函数:

public class Node {

char letter;  
Node nodeptr;  

Node(){  
    letter = ' ';  
    nodeptr = null;  
}

Node(char x){  
    letter = x;  
    nodeptr = null;  
}  

Node(char x, Node y){  
    letter = x;  
    nodeptr = y;  
}  
}  

有人可以帮我制作如下输出:

输入一个字母:m
链表:m
您要输入另一个字母 (y/n) 吗?是的

输入一个字母:o
链表:mo
您要输入另一个字母 (y/n) 吗?是的

输入一个字母:n
链表:mno
您要输入另一个字母 (y/n) 吗?是的

输入一个字母:e
链表:emno
您要输入另一个字母 (y/n) 吗?是的

输入一个字母:y
链表:emnoy
您要输入另一个字母 (y/n) 吗? n

感谢您今天使用我的程序!

PS:主程序可能不起作用,因为我真的很迷茫,我完全无法理解这个概念......是的,这是一个家庭作业...... :(

【问题讨论】:

  • 我认为最好添加一个LinkedList 类,并在该类中实现一个函数来添加一个新节点并将其放置在正确的位置以保持排序。还添加了打印功能。然后在您的主程序中,您只需在每次用户输入新字符时调用这两个函数。

标签: java linked-list character nodes alphabetical


【解决方案1】:

我没心情打开我的 Java 编辑器,您需要将代码转换为 Java 并进行这些输入,但我可以在这里给您一个想法:

var myList = new List();

function GetAlphabeticalPlace(char e){
  return "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(Character.toUpperCase(e));
}

function AssignOrder(char e){

  if(myList.length == 0) {
     myList.insert(0, e);
     return;
  } 
  for(var i = 0, i < myList.length, i++){
    if (GetAlphabeticalPlace(e) < GetAlphabeticalPlace(myList[i])){
       myList.insert(i, e); //insert the char in the corresponding index
       exit;
    }
  }
}

function PrintList(List l){
  var res = "";
  for (var i = 0, i  < l.length, i++){
    res += l[i];
  }
  return res;
}

console.write(PrintList(myList));

【讨论】:

  • 所以我试图清理它并将其实现到我的代码中,但是它说它不能从数组转换为节点。而且我很确定我不能使用数组来进行这个分配,只是节点操作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2020-08-17
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多