24.11.23

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

  1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector, list, map和set等;
    Java:
    数据结构 实现类 迭代器使用方式
    列表(List) ArrayList、LinkedList Iterator、ListIterator(支持双向遍历)
    集合(Set) HashSet、TreeSet、LinkedHashSet Iterator
    映射(Map) HashMap、TreeMap、LinkedHashMap 通过 entrySet() 或 keySet() 获取迭代
    队列(Queue) LinkedList、PriorityQueue 通过 Iterator 或 for-each 遍历
    C++:
    数据结构 实现类 迭代器使用方式
    动态数组 std::vector std::vector::iterator
    链表 std::list std::list::iterator
    集合(Set) std::set std::set::iterator
    映射(Map) std::map std::map<Key, T>::iterator
    队列(Queue) std::queue、std::priority_queue 使用特定访问方法(如top())
  2. 提交源代码;
    Java:
    package org.test.ruanjiansheji.diedaiqi;

import java.util.*;

class Student {
String name;
int id;
int age;

public Student(String name, int id, int age) {
    this.name = name;
    this.id = id;
    this.age = age;
}

@Override
public String toString() {
    return "ID: " + id + ", Name: " + name + ", Age: " + age;
}

}

public class StudentIterator {
public static void main(String[] args) {
List students = new ArrayList<>();
// 初始化学生数据
students.add(new Student("Alice", 1002, 20));
students.add(new Student("Bob", 1001, 19));
students.add(new Student("Charlie", 1003, 21));
// 按学号从小到大排序
students.sort(Comparator.comparingInt(s -> s.id));
System.out.println("按学号从小到大:");
Iterator ascIterator = students.iterator();
while (ascIterator.hasNext()) {
System.out.println(ascIterator.next());
}

    // 按学号从大到小排序
    students.sort((s1, s2) -> Integer.compare(s2.id, s1.id));
    System.out.println("\n按学号从大到小:");
    Iterator<Student> descIterator = students.iterator();
    while (descIterator.hasNext()) {
        System.out.println(descIterator.next());
    }
}

}
C++:

include

include

include

using namespace std;

struct Student {
string name;
int id;
int age;

// 构造函数
Student(string n, int i, int a) : name(n), id(i), age(a) {}

// 输出学生信息
void print() const {
    cout << "ID: " << id << ", Name: " << name << ", Age: " << age << endl;
}

};

int main() {
vector students = {
{"Alice", 1002, 20},
{"Bob", 1001, 19},
{"Charlie", 1003, 21}
};

// 按学号从小到大排序
sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
    return a.id < b.id;
    });
cout << "按学号从小到大:" << endl;
for (auto it = students.begin(); it != students.end(); ++it) {
    it->print();
}

// 按学号从大到小排序
sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
    return a.id > b.id;
    });
cout << "\n按学号从大到小:" << endl;
for (auto it = students.begin(); it != students.end(); ++it) {
    it->print();
}

return 0;

}

  1. 注意编程规范。
posted @ 2024-11-23 21:24  起名字真难_qmz  阅读(6)  评论(0)    收藏  举报