单向链表

来源:互联网 发布:杭州龙席网络销售什么 编辑:程序博客网 时间:2024/06/04 18:54

1.准备数据

class Data// 数据元素类{// ...}

class Node// 链表节点类{Data data = new Data();Node next;}


2.插入尾节点

Node addEnd(Node head, Data data) {Node node, temp;if ((node = new Node()) == null) {System.out.println("申请内存失败!");return null;}node.data = data;node.next = null;if (head == null) {head = node;return head;}temp = head;while (temp.next != null) {temp = temp.next;}temp.next = node;return head;}


3.插入头结点

Node addFirst(Node head, Data data) {Node node;if ((node = new Node()) == null) {System.out.println("申请内存失败!");return null;}node.data = data;node.next = head;head = node;return head;}


4.查找节点

Node findNode(Node head, Data data) {Node temp;temp = head;while (temp != null) {if (temp.data.compareTo(data)) {return temp;}temp = temp.next;}return null;}


5.插入节点

Node insertNode(Node head, Data findData, Data data) {Node node, temp;if ((node = new Node()) == null) {System.out.println("申请内存失败!");return null;}node.data = data;temp = head;while (temp != null) {if (temp.data.compareTo(findData)) {break;}temp = temp.next;}if (temp != null) {node.next = temp.next;temp.next = node;} else {System.out.println("未找到正确的插入位置!");}return head;}


6.删除节点

Node deleteNode(Node head, Data data) {if (head == null) {return null;}if (head.data.compareTo(data)) {head = head.next;return head;}Node node, temp;node = head;temp = head.next;while (temp != null) {if (temp.data.compareTo(data)) {node.next = temp.next;temp = null;} else {node = temp;temp = temp.next;}}return head;}


7.计算链表长度

int listLength(Node head) {Node temp;int len = 0;temp = head;while (temp != null) {len++;temp = temp.next;}return len;}


8.显示所有节点

void printAllNode(Node head){  Node temp;  Data data;  temp=head;  while (temp!=null) {  data=temp.data;  System.out.println(...);  temp=temp.next;  }  }


0 0
原创粉丝点击