(学习java)带有头结点的单链表结构
2017-10-14 22:11
429 查看
//10-14 数据结构中带有头结点的单链表结构,用java语言简单实现
public class LineListNodeHead {public static void main(String[] args) {LineList L = new LineList();L.addNodeH(1);L.addNodeH(2);L.addNodeF(3);L.addNodeF(6);L.ListInsert(1, 5);L.ListDelete(2);L.ListClear();L.addNodeF(3);L.addNodeH(2);L.ListNode();}public interface IList{public void addNodeH(int data);public void addNodeF(int data);public void ListNode();public int ListInsert(int i, int data);public int ListDelete(int i);public void ListClear();}//结点public static class Node{public int data;public Node next;public Node(){}public Node(int data){this.data = data;this.next = null;}}public static class LineList implements IList{//头结点private Node head;//链表长度private int size;public LineList(){head = new Node();}@Override//带头结点的单链表头插法public void addNodeH(int data) {Node node = new Node(data);if(head.next == null){head.next = node;size++;}else{node.next = head.next;head.next = node;size++;}}@Override//带头结点的单链表尾插法public void addNodeF(int data) {Node node = new Node(data);if(head.next == null){head.next = node;size++;}else{Node p = head.next;while(p.next != null){p = p.next;}node.next = p.next;p.next = node;size++;}}@Override//带头结点的单链表遍历public void ListNode() {Node p = head.next;if(p == null){System.out.println("空链表");System.out.println("单链表的长度" + size);}while(p.next != null){System.out.print(p.data + "->");p = p.next;}System.out.println(p.data);System.out.println("单链表的长度" + size);}@Override//带头结点的单链表任意插入public int ListInsert(int i, int data) {Node temp = head;int j = 1;if(i<0){System.out.println("i值输入有误");return 0;}while(temp.next != null && j<i){temp = temp.next;j++;}Node node = new Node(data);node.next = temp.next;temp.next = node;size++;return 1;}@Override//单链表的删除public int ListDelete(int i) {Node temp = head;int j = 1;if(i<0){System.out.println("i值输入有误");return 0;}while(temp.next!=null && j<i){temp = temp.next;j++;}int n = temp.next.data;temp.next = temp.next.next;size--;return n;}@Override//列表的清空public void ListClear() {Node temp = head.next;while(head.next!=null){head.next = temp.next;temp = null;temp = head.next;size--;}}}}
相关文章推荐
- (学习java)带有头结点的单向循环链表
- java数据结构之带头结点的单链表
- (学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
- 学习java数据结构基础知识之链表
- 数据结构(二):Java实现:链表实现增删查操作(具有头结点)
- bo2-2.cpp 带有头结点的单链表(存储结构由c2-2.h定义)的基本操作(12个)
- JAVA 数据结构与算法学习笔记一(转载)
- 结构之美:单链表的头结点与头指针
- Java存储结构-JVM规范学习笔记
- 结构之美:查找单链表指定位置结点的数据
- 数据结构——链表学习笔记
- java中的链表学习
- 【数据结构基础】链表的倒数第M个结点的查找
- objective-c学习笔记第三章《objective-c循环结构与java中的区别》
- 带有头结点的简单链表实现
- C# 链表结构(1)-结点
- Java学习——Java基本的程序设计结构笔记(一)
- Java 链表结构
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- C语言实现线性结构创建动态链表的学习心得(一)