c++ - 如何在 C++ 的链表中添加 int 指针值?

标签 c++ list pointers linked-list

我做这个家庭作业已经有一段时间了,但我不知道自己哪里做错了。我的程序应该如何工作:
用户输入任意数量的正数,
数字在链表中,
输入的数字要相加,
除以输入的数字数量,
得出平均值,
但是,它并没有像我预期的那样工作,我已经玩了 3 个多小时了。我会联系我的老师,但她仍然没有回复我的最后一条消息,我需要立即获得帮助。提前致谢。

注意:我需要遍历链表,将所有输入的数字相加,统计节点数。

#include <iostream>
using namespace std;

int num, total, num_entries = 1;

struct number_node
{
 int number;
 number_node *next;
};

number_node *head_ptr;
number_node *current_ptr;

int get_number_data(int &number);
void add_node(int &number);
void move_current_to_end();
void display_avg();
void delete_list();

int main()
{
 if(get_number_data(num))
 {
  head_ptr = new number_node;
  head_ptr->number = num;
  head_ptr->next = NULL;

  while(get_number_data(num))
  {
   add_node(num);
  }
  display_avg();
  delete_list();
 }

 system("pause");
 return 0;
}

int get_number_data(int &number)
{
 int keep_data = 1;

 cout << "Enter a positive number (Enter a negative number to stop): ";
 cin >> num;
 if(num < 0)
 {
  keep_data = 0;
 }

 return(keep_data);
}

void add_node(int &number)
{
 number_node *new_rec_ptr;

 new_rec_ptr = new number_node;

 new_rec_ptr->number = num;
 new_rec_ptr->next = NULL;

 move_current_to_end();
 current_ptr->next = new_rec_ptr;
}

void move_current_to_end()
{
 current_ptr = head_ptr;
 num_entries++;

 while(current_ptr->next != NULL)
 {
  current_ptr = current_ptr->next;
  total = current_ptr->number + total;
 }
}

void display_avg()
{
 current_ptr = head_ptr;
 cout << "Average = " << total / num_entries << endl;
}

void delete_list()
{
 number_node *temp_ptr;

 current_ptr = head_ptr;

 do
 {
  temp_ptr = current_ptr->next;

  delete current_ptr;

  current_ptr = temp_ptr;
 }
 while(temp_ptr != NULL);
}

最佳答案

现在您正在将数据结构(链表)与您打算使用它的目的混合在一起。考虑将您的逻辑拆分为:

  • 您的 I/O 代码。
  • 链表实现。
  • 一个接受链表并计算平均值的函数。

关于c++ - 如何在 C++ 的链表中添加 int 指针值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415745/

相关文章:

function - 将 std::function 添加到向量 c++

python - 复制列表中的项目

c - 这段c代码中数组/指针的输出是什么

c++ - vector 下标超出范围错误,C++

c++ - 我是否应该期望单继承中的向上转型和向下转型不调整指针?

r - 将字符向量拆分为命名的字符向量列表

c# - ToArray() 方法将所有实例克隆为最后一个

c++ - 关于类成员函数指针的sizeof

c++ - 我如何使用 11 位数字

c++ - OpenGL 中的阴影贴图