某软件公司有n名员工,每名员工有姓名、职务、工号等属性,请把所有员工建立一个线性表,建立离职、入职,查询函数,当有员工商职成入职时,修改线性表,并且根据输出格式中的要求输出。(要求线性表采用动态分配的顺序 题目描述 存储结构,并实现顺序表的基本操作)
时间: 2024-09-23 18:02:54 浏览: 39
要为这个公司的员工信息创建一个动态分配的顺序表数据结构,我们可以使用链式结构(如单链表),因为顺序表在插入和删除元素时效率不高。但是,为了满足题目的需求,我们可以在数组中实现,数组可以提供更好的随机访问性能。
首先,我们需要定义一个Employee结构体,包含姓名(name)、职务(position)和工号(id):
```cpp
struct Employee {
string name;
string position;
int id;
};
```
接着,创建一个动态数组来存储员工信息,使用`std::vector<Employee>`作为基础容器:
```cpp
#include <iostream>
#include <string>
#include <vector>
// 动态数组(顺序表)
class EmployeeList {
private:
std::vector<Employee> employees;
int size; // 当前员工数量
public:
// 插入新员工
void addEmployee(const Employee& e) {
if (size == employees.size()) {
employees.resize(size * 2); // 如果满,扩大一倍容量
}
employees[size++] = e;
}
// 离职操作(假设id为有效索引,移除该员工)
void removeEmployee(int id) {
if (id < size) {
for (int i = id; i < size - 1; ++i) {
employees[i] = employees[i + 1];
}
employees.pop_back();
size--;
} else {
std::cerr << "Invalid employee ID." << std::endl;
}
}
// 查询员工
const Employee* findEmployeeById(int id) const {
if (id >= 0 && id < size) {
return &employees[id];
}
return nullptr;
}
// 输出所有员工信息
void printEmployees() const {
for (const auto& e : employees) {
std::cout << "Name: " << e.name << ", Position: " << e.position << ", ID: " << e.id << std::endl;
}
}
};
int main() {
EmployeeList empList;
// 添加员工、离职操作和查询示例...
return 0;
}
```
阅读全文