Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Linked List Problem

$
0
0
I am not expecting a fast answer, but I have to create a car database for my data structures class using a linked list in C, and I need to sort it by year as the data is being inputted then print it out on the screen. I have been working on this for a couple weeks and can't seem to make any head way. I understand the basic concepts of a linked list, how to traverse the list, and add to the end, etc, but when I attempt to sort it I completely mess it up. I know right now the program just stops after inputting data from the second entry, and before that I had it stuck in an infinite loop printing out the same two entries. I just don't know what I am doing wrong, and need some direction. I am not asking for you to finish my work for me, but perhaps point out what I am doing wrong, or what I should look into. I know that isn't specific, but I am not sure where to turn to. I am just frustrated and at the point of desperation. Once I finally get the basic code working I am going to clean it up, and hopefully separate it into separate functions, but this is the code that I have now. I am still working on it, and haven't stopped just because I am posting here. Thank you very much ahead of time for any help, I really do appreciate it quite a bit right now...

// Project 1 Phase II.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>

using namespace std;
typedef struct node                                                
{                                                               
	int data;               // will store information
	char make[150];
	char model[150];
	char engine[150];
	int year;
	int cost;
	node *next;             // the reference to the next node
};                              

int _tmain(int argc, _TCHAR* argv[])
{
	int count = 0;
	int cars;
	char make[150];
	char model[150];
	char engine[150];
	int year;
	int cost;
	node *head = NULL;      
	node *temp;              
	node *test;
	node *prev;
	//Ask user for how many cars to be inputted into database
	printf("How many Cars do you wish to enter?\n");
	scanf("%d", &cars);
	printf("\n");
	while (count < cars) {	
		temp = (node*)malloc(sizeof(node)); //allocate space for node 
		temp->data = count;// store data(first field)
		//Ask user for Data using carCount to input in the correct part of the structure
		printf("Enter Car\n");
		printf("Make: ");
		scanf("%s", make);  
		printf("Model: ");
		scanf("%s",model);
		printf("Cost: ");
		scanf("%d", &cost);
		printf("Year: ");
		scanf("%d", &year);
		printf("Engine ( 4 cyl, 6 cyl, etc...): ");
		scanf("%s", &engine);
		printf("\n");
		strcpy(temp->model, model); 
		strcpy(temp->engine, engine); 
		strcpy(temp->make, make); 
		temp->cost=cost;
		temp->year=year;
		temp->next=NULL;  // store the address of the pointer head(second field)
		if (head == NULL){
			head=temp;
			head->next=NULL;
			test=head;
			prev=head;
		} else {	
			if (test->year > temp->year){
				test->next = NULL;
				temp->next = test;
				prev->next = temp;
				head = prev;
			}
			while (test->next != NULL){
				test=test->next;
				prev=test;
			} 
			test->next=temp;


		}
		count = count + 1;

	}
	node *temp1;
	temp1 = head;

	while( temp1!=NULL )
	{
		cout<< temp1->data<<" ";// show the data in the linked list
		cout<< temp1->make<<" ";
		cout<< temp1->model<<" ";
		cout<< temp1->engine<<" ";
		cout<< temp1->year<<" ";
		cout<< temp1->cost<<"\n ";
		temp1 = temp1->next;   // tranfer the address of 'temp->next' to 'temp'
	}


	return 0;
}
 

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>