链表的创建与节点的删除

来源:互联网 发布:游戏充值平台源码 编辑:程序博客网 时间:2024/05/21 02:50

链表分为单向链表和双向链表。
创建链表

class Node {    Node next = null;    int data;    public Node(int d) {        data = d;    }    void appendToTail(int d) {        Node end = new Node(d);        Node n = this;        while (n.next != null) {            n = n.next;        } /*将n指向当前最后一位数据*/        n.next = end; /*存入新加入数据*/    }}

删除单向链表中的节点
Note:
1. 检查空指针
2. 必要时更新表头(head)或表尾(tail)指针

Node deleteNode (Node head, int d) {    Node n = head;    if (n.data == d) {        return head.next; /*表头指向下一节点*/    } /* d为表头*/    while  (n.next != null) {        if (n.next.data == d) {            n.next = n.next.next;            return head; /*表头不变*/        }        n = n.next;    } /*d为表内数据*/    return head; /*d不存在*/}

备注:

单向链表 `prev.next = n.next;`双向链表`prev.next = n.next; n.next.prev = n.prev;`
原创粉丝点击