C ++以字母顺序向列表添加元素

时间:2015-10-05 22:08:04

标签: c++ arrays sorting

我有一系列学生,我正在尝试将另一名学生添加到列表中。我正在编写add方法,该方法将根据学生的姓名按字母顺序将学生添加到列表中。然后,列表中的所有其他元素将相应地移位。这是我尝试写的:

void Array::add(Student* student)
{
  if (size == MAX_STUDENTS)
    return;
  if(size == 0){
    students[0] = student;
    size ++;
  }
  if (size != 0){
    for(int i = 0; i < MAX_STUDENTS; ++i){
      if(students[i]->getName() >= student->getName()){
        students[i-1] = student;
        size ++;
      }
    }
  }
}

学生是一个指向学生对象Student** students;的指针数组,它在构造函数中与size一起初始化

但是,这不会对元素进行排序。我猜我的逻辑不正确。我也不知道如何将元素向下移动。任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

向下移动项目时,从列表中的最后一项开始,一直向前移动到插入点。应该是这样的:

int i;
for (i = size - 1; students[i]->getName() >= student->getName(); i--)
{
    students[i+1] = students[i];
}
students[i] = student;
size++;

更好的方法是让学生实施&lt;运算符并使用std::setstd::priority_queue。为什么重新发明轮子?