• ليست پيوندي دو طرفه به زبان ++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 477 22-02-2013 ساعت 15:13
    آخرین ارسال: VBProgrammer

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