ليست پيوندي دو طرفه به زبان ++C
#1
Note 
پياده سازي ليست پيوندي دو طرفه به زبان ++C

[CPP]
// dLinkList.cpp: implementation of the dLinkList class.
//
//////////////////////////////////////////////////////////////////////

#include "dLinkList.h"
#include
#include


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

dLinkList::dLinkList()
{
Front = NULL;
Rear = Front;
Count = 0;
}

dLinkList::~dLinkList()
{
NodePtr current, temp;

current = Front;
while (current != NULL)
{
temp = current;
current = current->Right;
delete temp;
}

Front = NULL;
Rear = Front;
Count = 0;

}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* InsertFirst */
/* Task: To insert a new node containing Item at the front of the list*/
/* Given: Item: A data item */
/* Return: Nothing */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void dLinkList::InsertFirst(char item)
{
NodePtr current;

current = new Node;

if (current == NULL)
{
cerr << "Memory allocation error!" << endl;
exit(1);
}
current->Right = Front;
current->Left = NULL;
current->Info = item;

Front = current;

if (Count == 0)
Rear = current;
else
Front->Left = current;
Count++;
}

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* InsertLast */
/* Task: To insert Item into a new node added to the rear of the list.*/
/* Given: Item A data item */
/* Return: Nothing */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void dLinkList::InsertLast(char item)
{
NodePtr current;

current = new Node;

if (current == NULL)
{
cerr << "Memory allocation error!" << endl;
exit(1);
}
current->Right = NULL;
current->Left = Rear;
current->Info = item;

if (Count == 0)
Front = current;
else
Rear->Right = current;
Rear = current;
Count++;
}

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* RemoveFirst */
/* Task: To remove first node from the list. */
/* Given: Nothing */
/* Return: Data item that removed from the list */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void dLinkList::RemoveFirst(char &item)
{
NodePtr current;

if (Count == 0)
{
cerr << "ERROR: there is no item to remove in the list!" << endl;
exit(1);
}

current = Front;
item = current->Info;
Front = current->Right;
Front->Left = NULL;
Count--;

if (Count == 0)
Rear = Front;

delete current;
}


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* ShowList */
/* Task: Show all data item of the list. */
/* Given: Nothing */
/* Return: Nothing */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void dLinkList::ShowFirstToLast(void)
{
NodePtr current;

current = Front;
while (current != NULL)
{
cout<< current->Info< current = current->Right;
}
[/CPP]

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note ليست پيوندي يک طرفه به زبان ++C VBProgrammer 0 406 22-02-2013 ساعت 15:13
آخرین ارسال: VBProgrammer

کاربرانِ درحال بازدید از این موضوع:   2 مهمان