博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环单链表操作
阅读量:4522 次
发布时间:2019-06-08

本文共 3064 字,大约阅读时间需要 10 分钟。

循环单链表操作

1.CircleLinkList 类实现循环单链表基本操作

1 package com.neusoft.link;  2 import com.neusoft.List.IList;  3 public class CircleLinkList implements IList{  4     public Node head;  5     public CircleLinkList() {  6         // TODO 初始化  7         head=new Node();//初始化头结点  8         head.next=head;  9     } 10     @Override 11     public void clear() { 12         // TODO 清空 13         head.next=head; 14     } 15     @Override 16     public boolean isEmpty() { 17         // TODO 判空 18         return head.next.equals(head); 19     } 20     @Override 21     public int length() { 22         // TODO 长度 23         Node p =head.next; 24         int length=0; 25         while (!p.equals(head)) { 26             p=p.next; 27             length++; 28         } 29         return length; 30     } 31     @Override 32     public Object get(int i) { 33         // TODO 读取带头结点的循环链表中第i个数据元素 34         Node p=head.next; 35         int j=0; 36         while (!p.equals(head)&&j
i||p.equals(head)) { 41 System.out.println("第"+i+"个元素不存在!"); 42 } 43 return p.data; 44 } 45 46 @Override 47 public void insert(int i, Object x) { 48 // TODO 带头结点的循环链表中第i个节点之前插入一个值为x的元素 49 Node p = head; 50 int j=-1;//第i个节点前驱位置 51 while ((!p.equals(head)||j==-1)&&j
i-1||(p.equals(head)&&j!=-1)) { 56 System.out.println("插入位置不合法!"); 57 } 58 Node s =new Node(x); 59 s.next=p.next; 60 p.next=s; 61 } 62 63 @Override 64 public void remove(int i) { 65 // TODO 移除循环单链表中第i个元素的节点,注意i的范围 66 Node p=head;//p指向要删除节点的前驱节点 67 int j=-1; 68 while ((!p.next.equals(head)||j==-1)&&j
i-1||(p.next.equals(head)&&j!=-1)) { 73 System.out.println("删除位置不合法!"); 74 } 75 p.next=p.next.next; 76 } 77 78 @Override 79 public int indexOf(Object x) { 80 // TODO 查找值为x的元素,返回位置 81 Node p =head.next;//p指向首节点 82 int j=0; 83 while ((!p.equals(head))&&(!p.data.equals(x))) { 84 p=p.next; 85 j++; 86 } 87 if (!p.equals(head)) { 88 return j; 89 }else { 90 return -1; 91 } 92 } 93 @Override 94 public void display() { 95 // TODO 输出元素 96 Node p =head.next; 97 while (!p.equals(head)) { 98 System.out.print(p.data+" "); 99 p=p.next;100 }101 System.out.println();102 }103 104 @Override105 public int remove(Object i) {106 // TODO Auto-generated method stub107 return 0;108 }109 110 }

 

 2.循环单链表的测试 

1 package com.neusoft.link; 2 /** 3  * @author zhao-chj 4  * 测试循环单链表 5  */ 6 public class DebugCircleLinkList { 7     public static void main(String[] args) { 8         //-----------初始化循环链表中各个元素--------- 9         CircleLinkList L = new CircleLinkList();10         int n = 8;11         for (int i = 0; i 

 

3.测试结果

    

 

转载于:https://www.cnblogs.com/jackchen-Net/p/6553595.html

你可能感兴趣的文章
input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
查看>>
【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)...
查看>>
函数名、闭包及迭代器
查看>>
mysql 5.6 参数详解
查看>>
求旋转数组的最小元素
查看>>
jQuery ajax error函数(交互错误信息的获取)
查看>>
Gson解析Json数组
查看>>
Lintcode: Fast Power
查看>>
Pocket Gem OA: Log Parser
查看>>
枚举也能直接转换为对应的数值输出
查看>>
angularjs1-7,供应商
查看>>
BitSet
查看>>
Spring常用注解,自动扫描装配Bean
查看>>
(转载)深入理解WeakHashmap
查看>>
JAVA中的数组
查看>>
爬虫—使用Requests
查看>>
scrollIntoView()窗口滚动
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
使用ansible远程管理集群
查看>>
读jQuery源码释疑笔记3
查看>>