الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أرجو المساعدة في شرح الكود على ماذا يعمل في كل سطر

مغلق
بدأه ابو عبود في 19 مارس 2006 · 1 رد · 492 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته وبعد........

لقد تعرفت على المنتدى عن طريق عضو فيه وحدثني انكم لن تخيبوا املي إن شاء الله .... والوقت المطلوب خلال 5 ايام وكلي امل ان تجيبوا عليه في هذه الفتره

لدي 3 اكواد

اولاً :

// Fig. 15.3: fig15_03.cpp

// List class test

#include <iostream.h>

#include "list.h"

// Function to test an integer List

template< class T >

void testList( List< T > &listObject, const char *type )

{

cout << "Testing a List of " << type << " values\n";

instructions();

int choice;

T value;

do {

cout << "? ";

cin >> choice;

switch ( choice ) {

case 1:

cout << "Enter " << type << ": ";

cin >> value;

listObject.insertAtFront( value );

listObject.print();

break;

case 2:

cout << "Enter " << type << ": ";

cin >> value;

listObject.insertAtBack( value );

listObject.print();

break;

case 3:

if ( listObject.removeFromFront( value ) )

cout << value << " removed from list\n";

listObject.print();

break;

case 4:

if ( listObject.removeFromBack( value ) )

cout << value << " removed from list\n";

listObject.print();

break;

}

} while ( choice != 5 );

cout << "End list test\n\n";

}

void instructions()

{

cout << "Enter one of the following:\n"

<< " 1 to insert at beginning of list\n"

<< " 2 to insert at end of list\n"

<< " 3 to delete from beginning of list\n"

<< " 4 to delete from end of list\n"

<< " 5 to end list processing\n";

}

int main()

{

List< int > integerList;

testList( integerList, "integer" ); // test integerList

List< float > floatList;

testList( floatList, "float" ); // test integerList

return 0;

}

ثانيـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــاً:

// Fig. 15.3: list.h

// Template List class definition

#ifndef LIST_H

#define LIST_H

#include <iostream.h>

#include <assert.h>

#include "listnd.h"

template< class NODETYPE >

class List {

public:

List(); // constructor

~List(); // destructor

void insertAtFront( const NODETYPE & );

void insertAtBack( const NODETYPE & );

bool removeFromFront( NODETYPE & );

bool removeFromBack( NODETYPE & );

bool isEmpty() const;

void print() const;

private:

ListNode< NODETYPE > *firstPtr; // pointer to first node

ListNode< NODETYPE > *lastPtr; // pointer to last node

// Utility function to allocate a new node

ListNode< NODETYPE > *getNewNode( const NODETYPE & );

};

// Default constructor

template< class NODETYPE >

List< NODETYPE >::List() : firstPtr( 0 ), lastPtr( 0 ) { }

// Destructor

template< class NODETYPE >

List< NODETYPE >::~List()

{

if ( !isEmpty() ) { // List is not empty

cout << "Destroying nodes ...\n";

ListNode< NODETYPE > *currentPtr = firstPtr, *tempPtr;

while ( currentPtr != 0 ) { // delete remaining nodes

tempPtr = currentPtr;

cout << tempPtr->data << '\n';

currentPtr = currentPtr->nextPtr;

delete tempPtr;

}

}

cout << "All nodes destroyed\n\n";

}

// Insert a node at the front of the list

template< class NODETYPE >

void List< NODETYPE >::insertAtFront( const NODETYPE &value )

{

ListNode< NODETYPE > *newPtr = getNewNode( value );

if ( isEmpty() ) // List is empty

firstPtr = lastPtr = newPtr;

else { // List is not empty

newPtr->nextPtr = firstPtr;

firstPtr = newPtr;

}

}

// Insert a node at the back of the list

template< class NODETYPE >

void List< NODETYPE >::insertAtBack( const NODETYPE &value )

{

ListNode< NODETYPE > *newPtr = getNewNode( value );

if ( isEmpty() ) // List is empty

firstPtr = lastPtr = newPtr;

else { // List is not empty

lastPtr->nextPtr = newPtr;

lastPtr = newPtr;

}

}

// Delete a node from the front of the list

template< class NODETYPE >

bool List< NODETYPE >::removeFromFront( NODETYPE &value )

{

if ( isEmpty() ) // List is empty

return false; // delete unsuccessful

else {

ListNode< NODETYPE > *tempPtr = firstPtr;

if ( firstPtr == lastPtr )

firstPtr = lastPtr = 0;

else

firstPtr = firstPtr->nextPtr;

value = tempPtr->data; // data being removed

delete tempPtr;

return true; // delete successful

}

}

// Delete a node from the back of the list

template< class NODETYPE >

bool List< NODETYPE >::removeFromBack( NODETYPE &value )

{

if ( isEmpty() )

return false; // delete unsuccessful

else {

ListNode< NODETYPE > *tempPtr = lastPtr;

if ( firstPtr == lastPtr )

firstPtr = lastPtr = 0;

else {

ListNode< NODETYPE > *currentPtr = firstPtr;

while ( currentPtr->nextPtr != lastPtr )

currentPtr = currentPtr->nextPtr;

lastPtr = currentPtr;

currentPtr->nextPtr = 0;

}

value = tempPtr->data;

delete tempPtr;

return true; // delete successful

}

}

// Is the List empty?

template< class NODETYPE >

bool List< NODETYPE >::isEmpty() const

{ return firstPtr == 0; }

// Return a pointer to a newly allocated node

template< class NODETYPE >

ListNode< NODETYPE > *List< NODETYPE >::getNewNode(

const NODETYPE &value )

{

ListNode< NODETYPE > *ptr =

new ListNode< NODETYPE >( value );

assert( ptr != 0 );

return ptr;

}

// Display the contents of the List

template< class NODETYPE >

void List< NODETYPE >::print() const

{

if ( isEmpty() ) {

cout << "The list is empty\n\n";

return;

}

ListNode< NODETYPE > *currentPtr = firstPtr;

cout << "The list is: ";

while ( currentPtr != 0 ) {

cout << currentPtr->data << ' ';

currentPtr = currentPtr->nextPtr;

}

cout << "\n\n";

}

#endif

ثالثــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــاً:

// Fig. 15.3: listnd.h

// ListNode template definition

#ifndef LISTND_H

#define LISTND_H

template< class NODETYPE > class List; // forward declaration

template<class NODETYPE>

class ListNode {

friend class List< NODETYPE >; // make List a friend

public:

ListNode( const NODETYPE & ); // constructor

NODETYPE getData() const; // return data in the node

private:

NODETYPE data; // data

ListNode< NODETYPE > *nextPtr; // next node in the list

};

// Constructor

template<class NODETYPE>

ListNode< NODETYPE >::ListNode( const NODETYPE &info )

: data( info ), nextPtr( 0 ) { }

// Return a copy of the data in the node

template< class NODETYPE >

NODETYPE ListNode< NODETYPE >::getData() const { return data; }

#endif

#2
اقتباس
لقد تعرفت على المنتدى عن طريق عضو فيه وحدثني انكم لن تخيبوا املي إن شاء الله
طيب سؤال لو سمحت يا أخي, ماذا أخبرك صديقك عن المنتدى ؟ يعني ما نوع المساعده الذي أعجبك في المنتدى؟

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…