无头结点的单链表(java实现)
2012-09-01 20:29
417 查看
import java.util.Random;
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
next = null;
}
}
class List {
Node first = null;
List(int n) {
Random rand = new Random(96);
for (int i = 0; i < n; i++) {
insert(rand.nextInt() %100);
}
}
public void insert(int data) {
Node node = new Node(data);
Node tmp;
if (first == null) {
first = node;
return;
}
if (first.data < data) {
node.next = first;
first = node;
return;
}
tmp = first;
while (tmp.next != null) {
if (data > tmp.next.data)
break;
tmp = tmp.next;
}
node.next = tmp.next;
tmp.next = node;
}
public void delete(int data) {
Node tmp;
if (data == first.data) {
first = first.next;
return;
}
tmp = first;
while (tmp.next != null) {
if (data == tmp.next.data) {
tmp.next = tmp.next.next;
return;
}
tmp = tmp.next;
}
}
public void reverse1(){
Node pre, cur, last;
pre = null;
cur = first;
while (cur != null) {
last = cur.next;
cur.next = pre;
pre = cur;
cur = last;
}
first = pre;
}
public void reverse2(){
Node cur, last;
cur = first;
if (cur == null || cur.next == null)
return;
while (cur.next.next != null)
cur = cur.next;
last = cur.next;
cur.next = null;
reverse2();
last.next = cur;
first = last;
}
public void reverse3() {
Node cur, last;
cur = first;
if(cur == null || cur.next == null)
return;
last = cur.next;
first = last;
reverse3();
last.next = cur;
cur.next = null;
}
public void show() {
Node tmp;
tmp = first;
while (tmp != null) {
System.out.print(tmp.data + " ");
tmp = tmp.next;
}
System.out.println();
}
}
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
next = null;
}
}
class List {
Node first = null;
List(int n) {
Random rand = new Random(96);
for (int i = 0; i < n; i++) {
insert(rand.nextInt() %100);
}
}
public void insert(int data) {
Node node = new Node(data);
Node tmp;
if (first == null) {
first = node;
return;
}
if (first.data < data) {
node.next = first;
first = node;
return;
}
tmp = first;
while (tmp.next != null) {
if (data > tmp.next.data)
break;
tmp = tmp.next;
}
node.next = tmp.next;
tmp.next = node;
}
public void delete(int data) {
Node tmp;
if (data == first.data) {
first = first.next;
return;
}
tmp = first;
while (tmp.next != null) {
if (data == tmp.next.data) {
tmp.next = tmp.next.next;
return;
}
tmp = tmp.next;
}
}
public void reverse1(){
Node pre, cur, last;
pre = null;
cur = first;
while (cur != null) {
last = cur.next;
cur.next = pre;
pre = cur;
cur = last;
}
first = pre;
}
public void reverse2(){
Node cur, last;
cur = first;
if (cur == null || cur.next == null)
return;
while (cur.next.next != null)
cur = cur.next;
last = cur.next;
cur.next = null;
reverse2();
last.next = cur;
first = last;
}
public void reverse3() {
Node cur, last;
cur = first;
if(cur == null || cur.next == null)
return;
last = cur.next;
first = last;
reverse3();
last.next = cur;
cur.next = null;
}
public void show() {
Node tmp;
tmp = first;
while (tmp != null) {
System.out.print(tmp.data + " ");
tmp = tmp.next;
}
System.out.println();
}
}
相关文章推荐
- 《剑指offer》编程题java实现(十八):删除链表的结点
- 链表问题之无头单链表删节点<Java实现>
- 【LeetCode-面试算法经典-Java实现】【025-Reverse Nodes in k-Group(单链表中k个结点一组进行反转)】
- C语言实现,无头结点不带环的单向链表的基本操作
- java实现创建链表以及插入节点,查找结点,删除节点等操作
- 两个链表的第一个公共结点java实现
- 单链表实现(C语言版,无头结点)
- 【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】
- 数据结构与算法分析笔记与总结(java实现)--链表6:两个链表找公共结点问题
- 数据结构(二):Java实现:链表实现增删查操作(具有头结点)
- 实现无头结点单链表的基本操作函数
- (学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
- 数据结构-java与c实现带头结点的单链表
- 求链表中倒数第k个结点-Java实现
- 【Java】给定一个有环链表,实现算法返回环路的开头结点
- 数据结构与算法分析笔记与总结(java实现)--链表7:含环链表找环入口结点问题
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
- java实现剑指Offer第15题“链表中倒数第 k 个结点”
- 输入链表输出该链表倒数第k个结点java实现
- 数据结构与算法分析笔记与总结(java实现)--链表8:对排序链表删除重复结点问题