19.1.3 用程序代码段实现对链表的删除
【实例19.2】下面再演示一个复杂的实例,其流程如图19.6所示。
实例的详细步骤如下:
图 19.6 链表数据结构的操作
(1)设计学生类,代码如下所示。
01 ///创建一个学生类
02 ///name是学生 姓名
03 ///code是学生 学号
04 ///school是学生所在学校
05 ///age是 年龄
06 ///grade是年级
07 ///major是专业
08 ///sexy是 性别
09 ///set方法是设置器
10 ///get方法是访问器
11 ///tostring方法是让对象以字符串的形式输出的方法
12 class student
13 {
14 String name;
15 int age;
16 String sexy;
17 String code;
18 String school;
19 String grade;
20 String major;
21 String address;
22 student x;
23 student y;
24 student(String name)
25 {
26 this.name=name;
27 }
28 public void set(int age, String sexy, String code, String school, String grade, String
29 major, String address)
30 {
31 this.age=age;
32 this.sexy=sexy;
33 this.school=school;
34 this.grade=grade;
35 this.major=major;
36 this.code=code;
37 this.address=address;
38 }
39 public String getname()
40 {
41 return name;
42 }
43 public String getcode()
44 {
45 return name;
46 }
47 public String getsexy()
48 {
49 return sexy;
50 }
51 public int getage()
52 {
53 return age;
54 }
55 public String getschool()
56 {
57 return school;
58 }
59 public String getmajor()
60 {
61 return major;
62 }
63 public String getgrade()
64 {
65 return grade;
66 }
67 public String getaddress()
68 {
69 return address;
70 }
71 public String toString()
72 {
73 String information="学生 姓名:"+name+""+" 学号:"+code+""+" 性别"+sexy+""+" 年龄:
74"+age+""+"所在学校:"+school+""+"所学专业:"+major+""+" 所在年级:"+grade+""+" 家庭地址:
75"+address;
76 return information;
77 }
78 }
(2)设计一个主运行类,通过创建链表对象和迭代器对象,对元素进行操作。详细代码如下所示。
79 import java.util.LinkedList;
80 import java.util.Iterator;
81 ///主运行类
82 ///st1至st10是学生类的十个创建的对象
83 ///set方法给这十个对象赋值
84 ///list1是创建的链表对象
85 ///it是迭代器对象,通过它来指向链表中的元素
86 ///remove是链表中删除元素的方法,通过它来删除元素
87 public class file2
88 {
89 public static void main(String[]args)
90 {
91 student st1=new student("王鹏");
92 student st2=new student("王浩");
93 student st3=new student("孙鹏");
94 student st4=new student("孙文君");
95 student st5=new student("谭妮");
96 student st6=new student("赵志强");
97 student st7=new student("王凯");
98 student st8=new student("苏瑞");
99 student st9=new student("张伟");
100 student st10=new student("张杰");
101 st1.set(20,"男","10000","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
102 st2.set(22,"男","10001","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
103 st3.set(21,"男","10002","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
104 st4.set(19,"女","10003","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
105 st5.set(18,"女","10004","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
106 st6.set(24,"男","10005","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
107 st7.set(22,"男","10006","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
108 st8.set(29,"女","10007","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
109 st9.set(25,"女","10008","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
110 st10.set(28,"男","10009","重庆大学","大学三年级","计算机专业","重庆市沙坪坝区");
111 try
112 {
113 LinkedList list1=new LinkedList();
114 list1.add(st1);
115 list1.add(st2);
116 list1.add(st3);
117 list1.add(st4);
118 list1.add(st5);
119 list1.add(st6);
120 list1.add(st7);
121 list1.add(st8);
122 list1.add(st9);
123 list1.add(st10);
124 Iterator it=list1.iterator();
125 System.out.println("以下就是所有的同学的信息:");
126 while(it.hasNext())
127 {
128 System.out.println(it.next());
129 }
130 System.out.println("其中有几个同学已经转学了!");
131 System.out.println("那么就从数据库中删除他:");
132 list1.remove();
133 list1.remove();
134 list1.remove();
135 list1.remove();
136 list1.remove();
137 Iterator it1=list1.iterator();
138 while(it1.hasNext())
139 {
140 System.out.println(it1.next());
141 }
142 }
143 catch(Exception e){}
144 }
145 }
【代码说明】第91~110行创建学生对象,并设置它们的属性值。第113~123行创建链表list1,并将这10个学生对象添加到链表中。第124~129行和第137~141行都是使用迭代器输出链接元素。第132~136行是移除链表中的元素。
【运行效果】
以下就是所有的同学的信息:
学生 姓名:王鹏 学号:10000 性别男 年龄:20所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:王浩 学号:10001 性别男 年龄:22所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:孙鹏 学号:10002 性别男 年龄:21所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:孙文君 学号:10003 性别女 年龄:19所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:谭妮 学号:10004 性别女 年龄:18所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:赵志强 学号:10005 性别男 年龄:24所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:王凯 学号:10006 性别男 年龄:22所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:苏瑞 学号:10007 性别女 年龄:29所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:张伟 学号:10008 性别女 年龄:25所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:张杰 学号:10009 性别男 年龄:28所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
其中有几个同学已经转学了!那么就从数据库中删除他:
学生 姓名:赵志强 学号:10005 性别男 年龄:24所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:王凯 学号:10006 性别男 年龄:22所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:苏瑞 学号:10007 性别女 年龄:29所在学校:重庆大学所学专业:计算机专
业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:张伟 学号:10008 性别女 年龄:25所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
学生 姓名:张杰 学号:10009 性别男 年龄:28所在学校:重庆大学所学专业:计算机专业 所在年级:大学三年级 家庭地址:重庆市沙坪坝区
表19.1罗列的是链表中常用的方法,仅供参考。