Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > About Ordered singly linked list..

Reply
Thread Tools

About Ordered singly linked list..

 
 
HS-MOON
Guest
Posts: n/a
 
      09-24-2004
I'm asking you to help me.
I'm a beginner of studying c++.
I'm trying to make the Singly Linked List(Ordered).
Anyway, I've been debugging all day.
I can't sort it out!!

As you see, I don't know what this is wrong..
When I run this pgm, It can't find the Current Variable.

//
Node *Current = Head;

if (!Head) {
Current = NewNode;
}
//

I think the point Current has Head's Data & Next now.
But It can't find Current variable..
I show you my coding.
If my coding is wrong, please correct it~*

----------------------------------------------------------
// InsertList.cpp
bool List::InsertList(Node *NewNode) {
Node *Previous = NULL;
Node *Current = Head;
if (!Head) // Empty
{
Head = NewNode;
return true;
}
if (NewNode->Data < Head->Data) // The first one.
{
NewNode->Next = Head;
Head = NewNode;
return true;
}
while (Current != NULL && (NewNode->Data > Current->Data)) // Go to Next
Item.
{
Previous = Current;
Current = Current->Next;
}
if (Current->Data == NewNode->Data) {
cout << "Data Redundancy" << endl;
return false;
}
else // In the middle of the list. // the last one.
{
Previous->Next = NewNode;
NewNode->Next = Current;
return true;
}
}
----------------------------------------------------------
//LinkedList.h
#include <iostream.h>
#include <stdlib.h>

class Node {
friend class List;
private:
Node *Next;
int Data;
public:
Node(int i) {
Data = i;
}
~Node() {}
};

class List {
private:
Node *Head;

public:
List() {
Head = NULL;
}
~List() {}
bool InsertList(Node *NewNode);
bool DeleteList(int Key);
void Display();
};
----------------------------------------------------------
Main.cpp
#include "linked_list.h"


void main() {
int MenuNumber, InsertNumber, DeleteNumber;

Node *DataItem;
List A;

cout << "Linked List" << endl;
cout << "Exit: 0 " << endl;
cout << "Insert: 1" << endl;
cout << "Delete: 2" << endl;
cout << "Display: 3" << endl;

cout << "Select Menu : ";
cin >> MenuNumber;

while (MenuNumber != 0) {
switch (MenuNumber) {
case 1:
cout << "Insert Number: ";
cin >> InsertNumber;

DataItem = new Node(InsertNumber);

if (DataItem == NULL) {
cout << "There is no memory" << endl;
exit(0);
}

if (A.InsertList(DataItem))
cout << "Good Insertion" << endl;
else
cout << "Bad Insertion" << endl;
break;

case 2:
cout << "Delete Number: ";
cin >> DeleteNumber;

if (A.DeleteList(DeleteNumber))
cout << "Good Delete" << endl;
else
cout << "Bad Delete" << endl;
break;

case 3:
A.Display();
break;

default:
cout << "Insert Again." << endl;
break;
}

cout << endl;
cout << "Select Menu Again: ";
cin >> MenuNumber;
}
}
---------------------------------------------------------
Display.cpp
#include "linked_list.h"

void List:isplay() {
Node *Current = Head;
cout << "List: ";
while (Current != NULL) {
cout << Current->Data << " ";
Current = Current->Next;
}
cout << endl;
}
---------------------------------------------------------
That's it!!~*
Please Help you..
I desperately need your advice & help.. ^^&


 
Reply With Quote
 
 
 
 
John Harrison
Guest
Posts: n/a
 
      09-24-2004

"HS-MOON" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) lkaboutprogramming.com...
> I'm asking you to help me.
> I'm a beginner of studying c++.
> I'm trying to make the Singly Linked List(Ordered).
> Anyway, I've been debugging all day.
> I can't sort it out!!


One error spotted see below.

>
> As you see, I don't know what this is wrong..
> When I run this pgm, It can't find the Current Variable.
>
> //
> Node *Current = Head;
>
> if (!Head) {
> Current = NewNode;
> }
> //
>
> I think the point Current has Head's Data & Next now.
> But It can't find Current variable..
> I show you my coding.
> If my coding is wrong, please correct it~*
>
> ----------------------------------------------------------
> // InsertList.cpp
> bool List::InsertList(Node *NewNode) {
> Node *Previous = NULL;
> Node *Current = Head;
> if (!Head) // Empty
> {
> Head = NewNode;


Here you need to set NewNode->Next to NULL

NewNode->Next = NULL;

> return true;
> }


You might have other errors, I didn't check.

john


 
Reply With Quote
 
 
 
 
Gernot Frisch
Guest
Posts: n/a
 
      09-24-2004
> ----------------------------------------------------------
> // InsertList.cpp
> bool List::InsertList(Node *NewNode) {
> Node *Previous = NULL;
> Node *Current = Head;
> if (!Head) // Empty
> {
> Head = NewNode;


Previuos=NULL; Next=NULL;

> return true;
> }
> if (NewNode->Data < Head->Data) // The first one.
> {
> NewNode->Next = Head;



NewNode->Previous = Head->Previous;
Head->Previous = NewNode;

....
Make a diagram where you draw all the pointers after the insertion of
the objects before and after the one that got inserted.


 
Reply With Quote
 
HS-MOON
Guest
Posts: n/a
 
      09-24-2004
I referenced your tips..
Thanks a lot!!!!!

Anyway, at last, I made it!! ㅠ_ㅠ(So impressed)
Is this right?!
Even though the result is right,
sometimes our pgm is not logically right.

So,I'd like you to answer to me whether this code is logically right or
not.~
------------------------------------------------------
bool List::InsertList(Node *NewNode) {
Node *Current;
Node *Previous;

if (Head == NULL) { // Nothing
NewNode->Next = NULL;
Head = NewNode;
return true;
}

Previous = Head;
Current = Head->Next;

if (Head->Data > NewNode->Data) { NewNode->Next = Head;
Head = NewNode;
return true;
}

if (Head->Data == NewNode->Data) {
cout << "Data Redundancy: Insertion Again!" << endl;
return false;
}

while (Current != NULL) {
if (Current->Data > NewNode->Data) { NewNode->Next = Current;
Previous->Next = NewNode;
return true;
}
if (Current->Data == NewNode->Data) { cout << "Data Redundancy:
Insert Again!" << endl;
return false;
} else {
Previous = Current;
Current = Current->Next;
}
}
NewNode->Next = NULL;
Previous->Next = NewNode;
return true;
}

 
Reply With Quote
 
Method Man
Guest
Posts: n/a
 
      09-24-2004

"Gernot Frisch" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> > ----------------------------------------------------------
> > // InsertList.cpp
> > bool List::InsertList(Node *NewNode) {
> > Node *Previous = NULL;
> > Node *Current = Head;
> > if (!Head) // Empty
> > {
> > Head = NewNode;

>
> Previuos=NULL; Next=NULL;
>
> > return true;
> > }
> > if (NewNode->Data < Head->Data) // The first one.
> > {
> > NewNode->Next = Head;

>
>
> NewNode->Previous = Head->Previous;
> Head->Previous = NewNode;
>
> ...


No, there is no 'Previous' member. He is implementing a singly linked list.
Check his Node class.


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Reverse search in a singly-linked list RAJASEKHAR KONDABALA C Programming 20 02-27-2011 12:53 PM
pruning a linear singly linked list Anando C Programming 59 04-28-2006 11:12 AM
Delete node from singly linked list when header is not known Raj C++ 13 02-02-2006 06:21 AM
Stack & Singly Linked List Data Structures Patrick McCourt Java 2 05-24-2004 10:55 PM
AlphaSort for singly linked list CR C Programming 1 12-15-2003 08:52 AM



Advertisments