School Assignment? Project Due Tomorrow? Chat LIVE With A Programming Expert!
Welcome to Dream.In.Code
Become an Expert!

Join 340,098 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 4,821 people online right now. Registration is fast and FREE... Join Now!



Linked list

Linked list Problem in my code, please help Rate Topic: -----

#1 CIS_Soldier87  Icon User is offline

  • New D.I.C Head
  • Pip
  • Group: New Members
  • Posts: 2
  • Joined: 30-October 07


Dream Kudos: 0

Post icon  Posted 30 October 2007 - 05:51 AM

Good evening everyone.

I'm a CIS student and I wrote an implementation for a Linked List code while studying for my test tomorrow.

Everything seems to work perfectly except that there are four problems that need solutions:


# include <iostream>
using namespace std;

# include <cstdlib>
# include <ctime>

# include <assert.h>


template <class E>

class LinkedList

{

protected:

	struct node
	{

		E data;
		node *next;

	};

	node *myCurrent;
	node *myPrevious;
	node *myFirst;
	 int mySize;

	 node* getNode(const E &e)
 {

	 node* newNode = new node;
	 assert (newNode !=0 );

	 newNode -> data = e;
	 newNode -> next = 0;

	 return newNode;
 }

	 void removeNode(E val)
	 {

		 node* remv;

			 remv = myCurrent;

		 	 myPrevious -> next = myCurrent->next;
			 myCurrent -> next = NULL;
			 myCurrent = myPrevious;

			 delete remv; /*next = NULL*/

			 
			 myCurrent = myCurrent -> next;
			 
			 //nextNode();

	 }

public:
	
	LinkedList<E>()
		: myCurrent(0), myPrevious(0)
	{

		mySize = 0;
		myFirst = 0;

	}

 E access()
 {
	 assert (myCurrent != 0);

	 return myCurrent -> data;
	 
 }
 


 void nextNode()
 {
	 assert (myCurrent != 0);

	 myPrevious = myCurrent;
	 myCurrent = myCurrent -> next;

}

 void insert (const E &e1)
 {

	 node* newnode = getNode(e1);

	 if (mySize != 0 || myCurrent == myFirst)

		 myFirst = newnode;

	 else

		 myPrevious->next = newnode;

	 newnode->next = myCurrent;
	 myCurrent = newnode;
	 mySize++;

	 



 }

 void First()
 {

	 assert (mySize != 0);

	 myCurrent = myFirst;
	 myPrevious = NULL;

 }


	LinkedList( LinkedList& lcopy)
		//:mySize(0),myCurrent(0),myPrevious(0),myFirst(0)
 {

	 lcopy.First();

	 while (lcopy.myCurrent->next != NULL)
	 {
		 insert (lcopy.myCurrent->data);
		 lcopy.nextNode();
		 nextNode();

		 lcopy.mySize++;
	 }
	 /*mySize = lcopy.mySize;*/
 };


 void printList()
 {
	 if (mySize == 0 || myFirst == NULL)
		 cout << "List is empty. " << '\n';

	 else

		First();

		 for (int i = 0; i < mySize; i++)
		 {
			 cout << myCurrent -> data << ' ';
						   
			 nextNode();
		 }
			
 }

 void removeValue(E v)
 {
	 First();

	 for (int i = 0; i < mySize; i++)
	 {

		 if (myCurrent -> data == v)
		 {
			 removeNode(v);
		 }






			 //myPrevious -> next = myCurrent->next;
			 //delete myCurrent -> next; /*next = NULL*/
			 //myCurrent = myPrevious -> next;
			 //nextNode();
		 
	 }
		 
	 }

 };





	 void main()

	 {

		 LinkedList<int> l1;
		 /*LinkedList<int> l2(l1);*/
		 
		 srand(time(0));

		 int b = 1;

		  for (int i = 14; i >= 1; i--)
		  {
			  l1.insert(b);
			  b++;
			  l1.nextNode();
		  
		  }

		 l1.printList();

		 l1.removeValue(4);

		 cout << '\n';
		 cout << '\n';

		 l1.printList();

	 }

		 








First one: is in the copy constructor, it produces a runtime error.

Second one: in either the nextNode() function or the insert() function, a runtime error occurs when
attempting to call the nextNode() function from the main();

Third one: is with printList() function, it prints the elements of the list oppositely (i.e., 54321 instead of 12345).

Fourth one: Is in the removeNode() function, it doesn't produce any errors, but it still doesn't work.

Please help me.
Thanks.

This post has been edited by CIS_Soldier87: 30 October 2007 - 06:54 AM

Was This Post Helpful? 0
  • +
  • -



Fast Reply

  

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users



Live Help!

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter Fan Us On Facebook

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month