读书人

java建立双向链表安插结点删除节点

发布时间: 2013-10-28 11:21:45 作者: rapoo

java建立双向链表,插入结点,删除节点

//双向链表的结构class DbList {DbList prior;DbList next;String data;}/** * 双向链表 *  */public class BuildDbLinkList {public static void dbList(DbList head) {String s;DbList first = head;Scanner scanner = new Scanner(System.in);while (true) {s = scanner.next();// 输入#结束输入,将链表尾指针指向表头,同时使表头priori指针指向尾指针,构成双向循环链表 if (s.equals("#")) {first.next = head;head.prior = first;break;}DbList node = new DbList();node.data = s;// 前一个结点的后指向指针指向当前结点first.next = node;// 当前结点的前指针指向前一个结点node.prior = first;node.next = null;first = first.next;}}// 在双向链表的第i个位置插入元素strpublic static void insertDbList(DbList head, int i, String str) {int j = 1;DbList cur = head.next;// 移动到第i个位置while (cur != null && j < i) {cur = cur.next;j++;}if (cur == null || j > i) {return;}DbList node = new DbList();node.data = str;node.prior = cur.prior;cur.prior.next = node;node.next = cur;cur.prior = node;}// 删除双向链表的第i个位置的结点public static void deleteDbList(DbList head, int i) {int j = 1;DbList cur = head.next;// 移动到第i个位置while (cur != null && j < i) {cur = cur.next;j++;}if (cur == null || j > i) {return;}cur.prior.next = cur.next;cur.next.prior = cur.prior;}public static void main(String[] args) {DbList head = new DbList();dbList(head);DbList current = head.next;while (current !=null && current != head) {System.out.println(current.data);current = current.next;}}}

读书人网 >编程

热点推荐