学位论文-—双向循环链表的创建及相关操作的实现课程设计说明书 联系客服

发布时间 : 星期一 文章学位论文-—双向循环链表的创建及相关操作的实现课程设计说明书更新完毕开始阅读1738a958bdd126fff705cc1755270722182e5960

山东建筑大学计算机学院课程设计说明书

}

private AnyType remove( Node p ){ p.prev.next=p.next; p.next.prev=p.prev;

theSize--;

return p.data; }//删除操作

private void inverse(){

Node p,q,l;

p=headNode.next; q=p.next;

while(p!=headNode){ }

l=q.next;//空置的中转结点赋值

q.next=p;//将p、q链表的前后域置换。q由p的后域变成前域 p.prev=q;

p=q;//置换后,将各个结点置换输出。 q=l;

q.next=p;

p.prev=q;//当p为头结点时,直接将前后域置换。 }//逆置

private Node getNode(int idex){ Node p;

if(idex<0||idex>size())

8

山东建筑大学计算机学院课程设计说明书

throw new IndexOutOfBoundsException(\

idex:\+idex+\+size()); if(idex

p=headNode;

for(int i=0;i<=idex;i++) p=p.next; }

else{

p=headNode;

for(int i=size();i>idex;i--){

p=p.prev; } }

return p; }//查找结点位置

public void print(){

for(int i=0;i

System.out.print(getNode(i).data+\); System.out.println(); }//结果输出

public void choose(){

System.out.println(\插入第i个节点\); System.out.println(\删除第i个节点\); System.out.println(\插入第一个节点\); System.out.println(\插入最后一个节点\); System.out.println(\逆置\);

}//选择操作项

public static void main(String[] args){

DlList dl=new DlList(); Scanner sc=new Scanner(System.in);

int xuanze;

9

山东建筑大学计算机学院课程设计说明书

System.out.println(\请输入链表的元素的个数(大于0个):\); int n=sc.nextInt();

System.out.println(\请输入链表的\+n+\个元素:\); for(int i=1;i<=n;i++){ int l=sc.nextInt();

dl.add(l);//链表元素输入 }

System.out.println(\您输入的链表为:\); dl.print();//调用print方法,提示操作。 System.out.println(\请选择操作项:\); dl.choose();//调用choose,选择操作。

while(true){

xuanze=sc.nextInt(); switch(xuanze){ case 1:

System.out.println(\请输入要插入的位置下标和数据:\); int idex=sc.nextInt(); int data=sc.nextInt();

dl.add(idex, data); dl.print(); break; case 2:

System.out.println(\请输入要删除节点的下标:\); int idex1=sc.nextInt(); dl.remove(idex1); dl.print(); break; case 3:

System.out.println(\请输入插入第一个节点的元素:\); int data1=sc.nextInt(); dl.add(0,data1); dl.print(); break;

case 4:

System.out.println(\请输入插入最后位置的元素:\); int data2=sc.nextInt();

10

山东建筑大学计算机学院课程设计说明书

dl.add(dl.size(), data2);

dl.print(); break; case 5:

dl.inverse(); dl.print(); break;

default:

System.out.println(\你的输入有误,请重新输入!\); break;

} } } }

五、测试数据

1、对每个函数的测试数据

链表中的元素插入为1、2、3、4、5 插入第二个结点的元素为6 删除第二个节点的位置的元素6 插入第一个节点的元素为7 插入最后一个节点的元素为6 逆置链表

2、对程序整体的测试数据

输入元素为1、2、3、4、5的双向循环链表

六、测试情况

请输入链表的元素的个数(大于0个): 5

请输入链表的5个元素: 1 2

11