📄 linkedlist.java
字号:
package c10;
public class LinkedList<E> {
private ListNode head;
private ListNode current;
private ListNode previous;
public LinkedList(){
head = null;
current = null;
previous = null;
}
public int length(){
int count = 0;
ListNode position = head;
while(position!=null){
count++;
position = position.link;
}
return count;
}
public void addANodeToStart(E addData){
//E[] e = new E[10] ;
head = new ListNode(addData,head);
if(current == head.link && current != null)
previous = head;
}
public void deleteHeadNode(){
if(head!=null){
head = head.link;
}else{
System.out.println("empty list!");
System.exit(0);
}
}
public boolean onList(E target){
return (Find(target)!=null);
}
public void showList(){
ListNode position = head;
while(position!=null){
System.out.println(position.data);
position = position.link;
}
}
public void resetIteration(){
current = head;
previous = null;
}
public void goToNext(){
if(current!=null){
previous = current;
current = current.link;
}else if(head!=null){
System.out.println("Iterated too many times or uninitialized iteration");
System.exit(0);
}else{
System.out.println("Iterating with an empty list. ");
System.exit(0);
}
}
public boolean moreToIterate(){
return (current != null);
}
public E getDataAtCurrent(){
if (current!=null)
return current.data;
else{
System.out.println("Getting data when current is not at any node");
System.exit(0);
}
return null;
}
public void resetDataAtCurrent(E newData){
if(current!=null){
current.data = newData;
}else{
System.out.println("Setting data when current is not at any node.");
System.exit(0);
}
}
public void insertNodeAfterCurrent(E newData){
ListNode newNode = new ListNode();
newNode.data = newData;
if(current!=null){
newNode.link = current.link;
current.link = newNode;
}else if(head!=null){
System.out.println("Inserting when iterator is past all nodes"
+" or uninistialized iterator.");
System.exit(0);
}else{
System.out.println("Using insertNodeAfterCurrent with empty list.");
System.exit(0);
}
}
public void deleteCurrentNode(){
if((current!=null)&&(previous!=null)){
previous.link = current.link;
current = current.link;
}else if((current!=null)&&previous==null){//at head node
head = head.link;
current = head;
}else{//current is null
System.out.println("Deleting with uninitialized current or an empty list");
System.exit(0);
}
}
private ListNode Find(E target){
ListNode position = head;
E data;
while(position!=null){
data = position.data;
if(data.equals(target)){
return position;
}
position = position.link;
}
return null;
}
private class ListNode {
private E data;
private ListNode link;
public ListNode(E data, ListNode link) {
this.data = data;
this.link = link;
}
public ListNode() {
data = null;
link = null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -