使用尾部引用Java

时间:2017-12-01 11:41:59

标签: java data-structures linked-list

我目前正在尝试编写一个方法insertEnd,它使用尾部引用在列表的末尾插入一个节点。由于我还在了解它,我不知道如何处理这个问题。如果您有任何建议或解决方案,请告诉我,因为它对我有很大帮助。

package lib;

public class LinkedList {
private Node head;
private Node tail;

public LinkedList(Node h){
    head = h;
}
public Node getHead(){
    return head;
}
public Node getTail(){
    return tail;
}

public void setHead(Node n){
    head = n;
}

    public void insertEnd(Node newNode){

    }
public class ListApp {

    public static void main(String[] args){
        Node n4 = new Node("green", null);
        Node n3 = new Node("orange", n4);
        Node n2 = new Node("blue", n3);
        Node n1 = new Node("red", n2);





package lib;

public class Node {
private String item;
private Node nextItem;

public Node(String str, Node n){
    item = str;
    nextItem = n;
}
public String getItem(){
    return item;
}
public void setItem(String str){
    item = str;
}
public Node next(){
    return nextItem;
}
public void setNext(Node n){
    nextItem = n;
}

public String getHead(){
    return item;
}
}

2 个答案:

答案 0 :(得分:1)

这是一个可能的解决方案:

public void insertEnd(Node newNode){
    newNode.setNext(null);
    if (tail == null) {
        tail = newNode;
        head = newNode;
    } else {
        tail.setNext(newNode);
        tail = newNode;
    }
}

答案 1 :(得分:0)

假设您的节点持有对next的引用,

public class CourierActivity extends AppCompatActivity {
    ...
   //Don't forget to intialize your List
    private List<OrderListItem> listItems = new ArrayList<OrderListItem>();
    ...

    private void loadOrdersData() {    
        RequestQueue queue = Volley.newRequestQueue(this);
        StringRequest sr = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                listItems = new ArrayList<>();

                try {
                    String rsp = new String(response.getBytes("ISO-8859-1"), "UTF-8");
                    JSONArray orders = new JSONArray(rsp);

                    for (int i = 0; i < orders.length(); i++) {
                        OrderListItem listItem = new OrderListItem(
                                // .. 
                        );

                        listItems.add(listItem);
                    }
                    //set list to adapter this way
                    adapter.setList(listItems);
                } catch (JSONException | UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT);
            }
        }) {

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                return params;
            }
        };

        queue.add(sr);
    }
    }

P.S:为了方便起见,Java已经实现了LinkedList。