//=====================程序描述==================
//程序名称:linked03.java
//程序目的:演示单链表的存入和读取
//作者: 梁承祝
//=====================程序描述==================
public class Test
{
public static void main(String args[])
{
Student stu=new Student();
stu.add("张三");
stu.add("李四");
stu.add("王五");
stu.add("周六");
String[] names=stu.getNames();
for(int i=0;i<names.length;i++)
{
System.out.print(names[i]+"\t");
}
System.out.println();
System.out.println("一共有"+stu.getSize()+"条数据!");
System.out.println();
//按链表顺序打印数据
Node header=stu.getHeader();
while(header!=null)
{
System.out.print(header.name+"\t");
header=header.next;
}
System.out.println();
}
}
class Node
{
String name;
Node next;
public Node(String name)
{
this.name=name;
next=null;
}
public Node(String name, Node next)
{
this(name);
this.next=next;
}
}
class Student
{
//链表头指针
private Node header;
//链表的插入操作
public void add(String name)
{
Node p;
if (header==null) //向空链表中加入结点
header=new Node(name);
else {
for(p=header;p.next!=null;p=p.next);
p.next=new Node(name);
}
}
//取表长
public int getSize()
{
Node p;
int counter;
for(counter=0, p=header;p!=null;p=p.next)
counter++;
return counter;
}
//设置头指针的位置
public void setHeader(Node header)
{
if (header!=this.header)
this.header=header;
}
//取头指针
public Node getHeader()
{
return header;
}
//取所有姓名
String[] getNames()
{
int i;
Node p;
int length=getSize();
String[] names=new String[length];
for(i=0, p=header;p!=null;p=p.next)
{
names[i]=p.name;
i++;
}
return names;
}
}
数据结构
最新推荐文章于 2024-09-11 20:54:10 发布