【发布时间】:2010-12-11 07:37:39
【问题描述】:
我一直在做这个家庭作业,但我不知道我做错了什么。我的程序应该如何工作:
用户输入任意数量的正数,
数字在一个链表中,
输入的数字应相加,
除以输入的数字数量,
导致平均,
但是,它并没有像我预期的那样工作,我已经玩了 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);
}
【问题讨论】:
-
你应该更好地描述问题,而不是“它没有解决”。什么不起作用?你期望会发生什么,反而会发生什么?你哪里有问题?
标签: c++ list pointers linked-list