package project4;
import javax.print.attribute.standard.PrinterMessageFromOperator;
import javax.xml.soap.Node;
interface Link{
void add(Object obj);
boolean remove(int index);
boolean set(int index,Object obj);
Object get(int index);
int contains(Object obj);
void clear();
void printLink();
Object[] toArray();
}
class LinkImpl implements Link{
private Node first;
private Node last;
private int size=0;
private class Node{
Node Ppre;
Node Pnext;
Object obj;
public Node(Node ppre, Node pnext, Object obj) {
super();
Ppre = ppre;
Pnext = pnext;
this.obj = obj;
}
public Object toArray() {
// TODO Auto-generated method stub
return null;
}
}
public Node getFirst() {
return first;
}
public void setFirst(Node first) {
this.first = first;
}
public Node getLast() {
return last;
}
public void setLast(Node last) {
this.last = last;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
//插入
@SuppressWarnings("null")
public void add(Object obj) {
// TODO Auto-generated method stub
if(this.size==0)
{
Node Pcur=new Node(null, null, obj);
this.first=Pcur;
this.last=Pcur;
this.size++;
}
else {
Node tmp=this.last;
Node Pcur=new Node(tmp, null, obj);
tmp.Pnext=Pcur;
this.last=Pcur;
this.size++;
}
}
@Override
public boolean remove(int index) {
// TODO Auto-generated method stub
if(index<0&&index>this.size-1) {
return false;
}
if(this.size==0)
{
return false;
}
Node Pcur=this.first;
if(this.size==1)
{
this.first=this.last=null;
this.size--;
return true;
}
else if(this.size>1)
{
if(index==0)
{
this.first=Pcur.Pnext;
Pcur.Ppre=Pcur.Pnext=null;
this.size--;
}
else if(index==this.size-1)
{
Node Ptail=this.last;
this.last=this.last.Ppre;
Ptail.Ppre=Ptail.Pnext=null;
this.size--;
}
else {
for(int i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
Pcur.Ppre.Pnext=Pcur.Pnext;
Pcur.Pnext.Ppre=Pcur.Ppre;
Pcur.Pnext=Pcur.Ppre=null;
this.size--;
}
return true;
}
return false;
}
@Override
public boolean set(int index, Object obj) {
// TODO Auto-generated method stub
int i=0;
Node Pcur=this.first;
if(index<size-1)
{
for(i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
Pcur.obj=obj;
return true;
}
return false;
}
@Override
public Object get(int index) {
// TODO Auto-generated method stub
Node Pcur=this.first;
if(index>size)
{
return null;
}
else {
for(int i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
return Pcur.obj;
}
}
@Override
public int contains(Object obj) {
// TODO Auto-generated method stub
Node Pcur=this.first;
for(int i=0;i<size;i++)
{
if(obj.equals(Pcur.obj))
{
return 1;
}
Pcur=Pcur.Pnext;
}
return 0;
}
@Override
public void clear() {
// TODO Auto-generated method stub
while(size>=2)
{
Node tmp=this.last;
tmp.Ppre.Pnext=null;
this.last=tmp.Ppre;
tmp.Pnext=tmp.Ppre=null;
this.size--;
}
this.first=this.last=null;
}
@Override
public void printLink() {
// TODO Auto-generated method stub
for(Node Pcur=this.first;Pcur!=null;Pcur=Pcur.Pnext)
{
System.out.println(Pcur.obj);
}
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
Node Pcur=this.first;
Object []object=new Object[3];
for(int i=0;i<this.size;i++)
{
object[i]=Pcur.obj;
Pcur=Pcur.Pnext;
}
return object;
}
}
public class Test{
public static void main(String []args)
{
Link link=new LinkImpl();
link.add("火车头");
link.add("车厢1");
link.add("车厢2");
System.out.println(link.remove(0));
for(int i=0;i<link.toArray().length;i++)
{
System.out.println(link.toArray()[i]);
}
}
}
import javax.print.attribute.standard.PrinterMessageFromOperator;
import javax.xml.soap.Node;
interface Link{
void add(Object obj);
boolean remove(int index);
boolean set(int index,Object obj);
Object get(int index);
int contains(Object obj);
void clear();
void printLink();
Object[] toArray();
}
class LinkImpl implements Link{
private Node first;
private Node last;
private int size=0;
private class Node{
Node Ppre;
Node Pnext;
Object obj;
public Node(Node ppre, Node pnext, Object obj) {
super();
Ppre = ppre;
Pnext = pnext;
this.obj = obj;
}
public Object toArray() {
// TODO Auto-generated method stub
return null;
}
}
public Node getFirst() {
return first;
}
public void setFirst(Node first) {
this.first = first;
}
public Node getLast() {
return last;
}
public void setLast(Node last) {
this.last = last;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
//插入
@SuppressWarnings("null")
public void add(Object obj) {
// TODO Auto-generated method stub
if(this.size==0)
{
Node Pcur=new Node(null, null, obj);
this.first=Pcur;
this.last=Pcur;
this.size++;
}
else {
Node tmp=this.last;
Node Pcur=new Node(tmp, null, obj);
tmp.Pnext=Pcur;
this.last=Pcur;
this.size++;
}
}
@Override
public boolean remove(int index) {
// TODO Auto-generated method stub
if(index<0&&index>this.size-1) {
return false;
}
if(this.size==0)
{
return false;
}
Node Pcur=this.first;
if(this.size==1)
{
this.first=this.last=null;
this.size--;
return true;
}
else if(this.size>1)
{
if(index==0)
{
this.first=Pcur.Pnext;
Pcur.Ppre=Pcur.Pnext=null;
this.size--;
}
else if(index==this.size-1)
{
Node Ptail=this.last;
this.last=this.last.Ppre;
Ptail.Ppre=Ptail.Pnext=null;
this.size--;
}
else {
for(int i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
Pcur.Ppre.Pnext=Pcur.Pnext;
Pcur.Pnext.Ppre=Pcur.Ppre;
Pcur.Pnext=Pcur.Ppre=null;
this.size--;
}
return true;
}
return false;
}
@Override
public boolean set(int index, Object obj) {
// TODO Auto-generated method stub
int i=0;
Node Pcur=this.first;
if(index<size-1)
{
for(i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
Pcur.obj=obj;
return true;
}
return false;
}
@Override
public Object get(int index) {
// TODO Auto-generated method stub
Node Pcur=this.first;
if(index>size)
{
return null;
}
else {
for(int i=0;i<index;i++)
{
Pcur=Pcur.Pnext;
}
return Pcur.obj;
}
}
@Override
public int contains(Object obj) {
// TODO Auto-generated method stub
Node Pcur=this.first;
for(int i=0;i<size;i++)
{
if(obj.equals(Pcur.obj))
{
return 1;
}
Pcur=Pcur.Pnext;
}
return 0;
}
@Override
public void clear() {
// TODO Auto-generated method stub
while(size>=2)
{
Node tmp=this.last;
tmp.Ppre.Pnext=null;
this.last=tmp.Ppre;
tmp.Pnext=tmp.Ppre=null;
this.size--;
}
this.first=this.last=null;
}
@Override
public void printLink() {
// TODO Auto-generated method stub
for(Node Pcur=this.first;Pcur!=null;Pcur=Pcur.Pnext)
{
System.out.println(Pcur.obj);
}
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
Node Pcur=this.first;
Object []object=new Object[3];
for(int i=0;i<this.size;i++)
{
object[i]=Pcur.obj;
Pcur=Pcur.Pnext;
}
return object;
}
}
public class Test{
public static void main(String []args)
{
Link link=new LinkImpl();
link.add("火车头");
link.add("车厢1");
link.add("车厢2");
System.out.println(link.remove(0));
for(int i=0;i<link.toArray().length;i++)
{
System.out.println(link.toArray()[i]);
}
}
}