java中只能用类实现数据结构的功能
class cnode{//循环单链表
private Object data;//定义数据域
private cnode nextcnode;
private cnode head=null;
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public cnode getNextcnode() {
return nextcnode;
}
public void setNextcnode(cnode nextcnode) {
this.nextcnode = nextcnode;
}
public void initcyclelist(){//循环链表初始化
head = new cnode();
//head.setData(data);
head.setNextcnode(head);
}
public void insert(Object data){//插入结点
//新建一个结点
cnode node=new cnode();
//结点中放入数据
node.setData(data);
//指针
if(head==head.getNextcnode()){
//只有头结点
head.setNextcnode(node);
node.setNextcnode(head);
}
else{
//不止一个结点
//创建临时结点(作用相当于指针,指向头结点)
cnode c=head;
//遍历循环链表,找到最后一个结点,再插入
while(head!=c.getNextcnode()){
c=c.getNextcnode();
}
//找到最后一个结点
//c结点的下一个结点设置为node
c.setNextcnode(node);
//node的下一个结点设置为头结点
node.setNextcnode(head);
}
}
public void print(){//输出循环链表的值
cnode c= head;
while(head!= c.getNextcnode()){
System.out.println(c.getData());
c=c.getNextcnode();
}
//循环退出后,还有一个结点的值没有输出
System.out.println(c.getData());
}
}
public class Testcnode {
public static void main(String[] args) {
cnode testcnode= new cnode();
testcnode.initcyclelist();
testcnode.insert(2);
testcnode.insert(3);
testcnode.insert(2);
testcnode.insert(4);
testcnode.print();
}
}
运行结果:
null
2
3
2
4
其中null是头结点