一、线性表
1. 链表
public class LinkedListDemo {
public static void main ( String[ ] args) {
SingleLinkedList list = new SingleLinkedList ( ) ;
list. sortAdd ( new LinkNode ( 1 , "aaa" , "bbb" ) ) ;
list. sortAdd ( new LinkNode ( 2 , "bbb" , "ccc" ) ) ;
list. sortAdd ( new LinkNode ( 5 , "bbb" , "ccc" ) ) ;
list. sortAdd ( new LinkNode ( 3 , "ccc" , "ddd" ) ) ;
list. setNode ( new LinkNode ( 2 , "kkkk" , "sss" ) ) ;
list. remove ( 1 ) ;
list. list ( ) ;
}
}
class SingleLinkedList {
private final LinkNode head = new LinkNode ( 0 , "" , "" ) ;
private int size;
public void addTail ( LinkNode linkNode) {
LinkNode temp = head;
while ( true ) {
if ( temp. next == null) {
break ;
}
temp = temp. next;
}
temp. next = linkNode;
size++ ;
}
public void sortAdd ( LinkNode linkNode) {
if ( head. next == null) {
addTail ( linkNode) ;
return ;
}
LinkNode temp = head;
boolean flag = false ;
while ( true ) {
if ( temp. next == null) {
break ;
}
if ( temp. next. no > linkNode. no) {
break ;
}
if ( temp. next. no == linkNode. no) {
flag = true ;
break ;
}
temp = temp. next;
}
if ( flag) {
System. out. println ( "编号冲突" ) ;
} else {
linkNode. next = temp. next;
temp. next = linkNode;
size++ ;
}
}
public void remove ( int index) {
boolean flag = false ;
LinkNode temp = head;
while ( true ) {
if ( temp. next == null) {
break ;
}
if ( temp. next. no == index) {
flag = true ;
break ;
}
temp = temp. next;
}
if ( flag) {
size-- ;
temp. next = temp. next. next;
} else {
System. out. println ( "删除节点不存在" ) ;
}
}
public void setNode ( LinkNode linkNode) {
if ( head. next == null) {
System. out. println ( "链表为空" ) ;
return ;
}
boolean flag = false ;
LinkNode tmp = head. next;
while ( true ) {
if ( tmp == null) {
flag = false ;
break ;
}
if ( tmp. no == linkNode. no) {
flag = true ;
break ;
}
tmp = tmp. next;
}
if ( flag) {
tmp. name = linkNode. name;
tmp. nickname = linkNode. nickname;
} else {
System. out. println ( "没有找到" ) ;
}
}
public int size ( ) {
return size;
}
public void list ( ) {
LinkNode temp = head;
while ( temp. next != null) {
temp = temp. next;
System. out. println ( temp. toString ( ) ) ;
}
}
}