11.19
软件设计 石家庄铁道大学信息学院
实验18:迭代器模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解迭代器模式的动机,掌握该模式的结构;
2、能够利用迭代器模式解决实际问题。
[实验任务一]:JAVA和C++常见数据结构迭代器的使用
信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。
实验要求:
1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector, list, map和set等;
2. 提交源代码;
3. 注意编程规范。
1.
Java常用数据结构及应用:数组,栈和队列
数据结构
常用数据结构
1.数组Array
2.栈Stack
3.队列Queue
数据结构
数据结构是为了让计算机能够更合理地组织数据、更高效地存储和处理数据而产生的。计算机中的数据往往具有复杂的关系,因此存取效率,可扩展性,顺序性,可排序性都是数据结构中的重要指标。
数据结构贯穿程序设计的始终。
数据表示 数据处理
抽象 逻辑结构 基本运算
实现 存储结构 算法
评价 不同数据结构的比较及算法分析
逻辑结构: 逻辑结构就是数据之间的关系。可以分为两种:线性结构和非线性结构。
线性结构:有且只有一个开始结点和一个终端结点,且所有结点都最多只有一个直接前驱和一个直接后继。如线性表,典型的有:顺序表、链表、栈(顺序栈、链栈)和队列(顺序队列、链队列)等。
非线性结构:每个结点可以有不止一个直接前驱和直接后继。常见的非线性结构有:树、图等。
存储结构: 存储结构也就是物理结构,是逻辑结构的存储映像。常见的存储结构有顺序存储、链式存储、索引存储以及散列存储(哈希表)。可以将存储结构理解为逻辑结构在计算机中的表现形式。
基本运算: 包括数据的增删改查和排序,根据逻辑结构来定义,根据算法和存储结构来实现。
算法: 算法可以理解为解决问题的步骤。对于数据结构来说,如何插入、寻找和删除一个数据项以及如何迭代地访问某一数据结构中的各数据项等都属于算法的范畴。另一个我们熟知的范畴就是排序。
常用数据结构
数据结构可以划分为三类:线性(排序)结构,树形结构,图形结构。
Java语言中最常用的数据结构包括数组、队列、链表等等
2.源代码
package beidao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
class Student implements Comparable<Student>{
private String name;
private int sid;
private int age;
public Student(String name, int sid, int age) {
this.name = name;
this.sid = sid;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"姓名='" + name + '\'' +
", 学号=" + sid +
", 年龄=" + age +
'}';
}
@Override
public int compareTo(Student o) {
if (this.sid > o.sid){
return -1;
} else if (this.sid < o.sid){
return 1;
} else {
return 0;
}
}
}
class IteratorDemo {
public static void main(String[] args) {
Student student1 = new Student("张三",20193885,21);
Student student2 = new Student("李四",20201456,20);
Student student3 = new Student("王五",20184655,23);
Student student4 = new Student("赵六",20191242,22);
Student student5 = new Student("李七",20213256,19);
List<Student> list = new ArrayList<Student>();
list.add(student1);list.add(student2);list.add(student3);
list.add(student4);list.add(student5);
Collections.sort(list);
System.out.println("按学号排序输出:");
Iterator i = list.iterator();
while (i.hasNext()){
System.out.println(i.next().toString());
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统