📄 llist.java
字号:
package apriori;
import apriori.Link;
public class LList
{
public Link head,tail;
protected Link curr;
public LList(int size)
{
setup();
}
public LList()
{
setup();
}
protected void setup()
{
tail=head=curr=new Link(null);
}
public void clear() {
head.setNext(null);
curr=tail=head;
}
public void insert(Object item)
{
assert curr==null:"no currant element!";
curr.setNext(new Link(item,curr.next()));
if(tail==curr)
{
tail=curr.next();
}
}
public void append(Object item)
{
tail.setNext(new Link(item,null));
tail = tail.next();
}
public Object remove()
{
Object item=curr.next().element();
curr.setNext(curr.next().next());
return item;
}
public void setFirst()
{
curr=head;
}
public void next()
{
if(curr!=tail)
{
curr=curr.next();
}
}
public void prev()
{
if(curr!=null&&curr!=head)
{
Link temp=head;
while(temp!=null&&temp.next()!=curr)
{
temp=temp.next();
}
curr=temp;
}
else
{
curr=null;
return;
}
}
public int length()
{
int length=0;
for(Link temp=head.next();temp!=null;temp=temp.next())
length++;
return length;
}
public void setPos(int pos)
{
curr=head.next();
for(int i=0;i<pos-1;i++)
{
curr=curr.next();
}
}
public void setValue(Object val)
{
curr.next().setElement(val);
}
public Object currValue()
{
Object item=curr.next().element();
return item;
}
public boolean isEmpty()
{
return curr.next()==null;
}
public boolean isInList()
{
return curr.next()!=null&&curr!=null;
}
public void contraryOrder()
{
Link curr1;
curr=head.next();
head.setNext(tail);
tail=curr;
curr1=curr.next();
for(int i=0;i<length()-1;i++)
{
curr1=curr.next();
if(i==1)
curr.next().setNext(curr);
else
curr.setNext(curr1);
curr=curr1;
}
tail.setNext(null);
}
public void print()
{
if(isEmpty())
{
System.out.println("null");
}
else
{
for(setFirst();isInList();next())
{
System.out.println(currValue()+" ");
}
}
}
public void reverse2()
{
Link temp=head.next,after=null,before=null;
while(temp!=null)
{
after=temp.next;
temp.next=before;
before=temp;
temp=after;
}
Link link=new Link(null);
link.setNext(before);
head=link;
}
public void reverse1()
{
Link temp1;
curr=tail;
while(curr!=head.next()){
this.prev();
curr.next().setNext(curr);
}
curr.setNext(null);
temp1=head.next();
head.setNext(tail);
tail=temp1;
setFirst();
}
public void reverse3(){
Link temp,temp1,temp2,temp3;
temp1=null;
temp2=null;
temp=head.next();
for(curr=head.next();;)
{
temp1=temp2;
if(curr.next()!=null&&curr.next().next()!=null)
{
temp2=curr.next();
temp3=curr.next().next();
curr.setNext(temp1);
temp2.setNext(curr);
curr=temp3;
}
if(curr.next()==null){
tail.setNext(temp2);
break;
}
if(curr.next().next()==null){
curr.setNext(temp2);
tail.setNext(curr);
break;
}
}
head.setNext(tail);
tail=temp;
setFirst();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -