Hi I'm trying to code a program to insert 12 integers in a linked list, sort them and then output the average and sorted list. I think i have the code mostly right but it wont sort correctly i can't find my problem. Here is my code.
#include <iostream>
using namespace std;
void getData(int& number);
class node_type
{
public:
int num;
node_type *next;
};
int main()
{
node_type *first, *p, *q, *newnode, *secondFirst, *p2, *q2, *secondNewnode;
int i = 0;
int number = 0;
float sum = 0;
float average;
while ((*q).next != 0)
{
cout << (*q).num << endl;
sum = sum + (*q).num;
q = (*q).next;
}
average = sum/12;
cout << "The average of all the integers is " << average << endl;
int main()
{
node_type *first=0, *p, *q, *newnode;//, *secondFirst, *p2, *q2, *secondNewnode;
int i = 0;
int number = 0;
float sum = 0;
float average;
/* // OK but not needed
first = new node_type;
p = first;
getData(number);
(*first).num = number;
(*first).next = 0;
*/
for (i = 0; i < 12; ++i)
{
//cout << "First " << (*first).num << endl;
getData(number);
newnode = new node_type;
(*newnode).num = number;
//(*p).next = newnode;// BAD!!
//p = newnode;// maybe ok but no need
if (first == 0)
{
first = newnode;
}
elseif ((*newnode).num < (*first).num)
{
(*newnode).next = first;
first = newnode;
}
elseif ((*first).next == 0)
{
(*first).next = newnode;
}
else
{
q = first;
p = (*q).next;
//while ((*p).num < ((*newnode).num) && ((*p).next != 0))// misses last node
while ((p != 0) && (*p).num < ((*newnode).num))
{
q = p;
p = (*p).next;
}
//if ((*p).num > (*newnode).num)// no need to qualify and p may be NULL - end of list
//{
(*q).next = newnode;
(*newnode).next = p;
//}
}
}
q = first;
cout << "The List contains:" << endl;
// while ((*q).next != 0)// misses last node
while (q != 0)
{
cout << (*q).num << endl;
sum = sum + (*q).num;
q = (*q).next;
}
average = sum/12;
cout << "The average of all the integers is " << average << endl;
}