实验迭代器模式

发布时间 2023-11-20 08:29:26作者: 北·岛

实验18:迭代器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解迭代器模式的动机,掌握该模式的结构;

2、能够利用迭代器模式解决实际问题。

 

[实验任务一]JAVAC++常见数据结构迭代器的使用

1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。

实验要求:

1. 搜集并掌握JAVAC++中常见的数据结构和迭代器的使用方法,例如,vector, list, mapset等;

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());

        }

    }

}