19.1.3 用程序代码段实现对链表的删除

【实例19.2】下面再演示一个复杂的实例,其流程如图19.6所示。


实例的详细步骤如下:

19.1.3 用程序代码段实现对链表的删除 - 图1

图 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罗列的是链表中常用的方法,仅供参考。

19.1.3 用程序代码段实现对链表的删除 - 图2