此列表插入功能的作用是什么?

问题描述

每次我觉得自己掌握了指针时,似乎都无法在另一次尝试中理解它们。我看了一堆这个函数,我相信它将按排序顺序插入值(从最小到最大),但是在可视化列表(假设我正确执行此操作)时,插入了以下值10,40,5,20如下所示:|10|0|40|0|5|0|20|所以我不明白该函数的作用,或者我以某种方式打印了错误内容。这是函数(foo)及其组件:

#include <iostream>
using namespace std;

class list {
  struct node {
    node() { key=0; next=NULL; }
    int key;
    node *next;
  };
  public:
    list() { L = new node; }
    void foo(int);
  private:
    node *L;
};

//what does THIS function do?
void list::foo(int key) {
  node *p = L,*q = L->next;
  while (q && q->key < key) {
    p = q;
    q = q->next;
  }
  p->next = new node;
  p->next->key = key;
  p->next->next = q;
}

int main() {
list L; int key;
while (cin >> key)
  L.foo(key);
}

我没有写这个。这是作业的一部分(我相信我失败了)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)