الجانب المعماري
 
الرئيسيةالبوابةاليوميةس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 برنامج القائمة المتصلة في مادة تركيب البيانات

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
hanin



عدد المساهمات : 4
تاريخ التسجيل : 23/03/2012

مُساهمةموضوع: برنامج القائمة المتصلة في مادة تركيب البيانات   الأربعاء أبريل 11, 2012 1:30 pm

#include <iostream.h>
#include <string.h>
struct node
{ char name[20]; // Name of up to 20 letters
int age; // D.O.B. would be better
float height; // In metres
node *next;// Pointer to next node
};

node *head = NULL;
node *current; // Used to move along the list
int option = 0;

void add_node_at_end()
{ node *temp, *move; // Temporary pointers

// Reserve space for new node and fill it with data
temp = new node;
cout << "Please enter the name of the person: ";
cin >> temp->name;
cout << "Please enter the age of the person : ";
cin >> temp->age;
cout << "Please enter the height of the person : ";
cin >> temp->height;
temp->next = NULL;

// Set up link to this node
if (head == NULL)
{ head = temp;
current = head;
}
else
{ move = head;
// We know this is not NULL - list not empty!
while (move->next != NULL)
{ move = move->next;
// Move to next link in chain
}
move->next = temp;
}
}



void add_node_at_begining()
{ node *temp, *move; // Temporary pointers

// Reserve space for new node and fill it with data
temp = new node;
cout << "Please enter the name of the person: ";
cin >> temp->name;
cout << "Please enter the age of the person : ";
cin >> temp->age;
cout << "Please enter the height of the person : ";
cin >> temp->height;
// Set up link to this node
if (head == NULL)
{
temp->next=NULL;
head = temp;

}
else
{
temp->next = head;
head= temp;
}
current = head;
}








void display_list()
{ node *move;
move = head;
cout << endl;
if (move == NULL)
cout << "The list is empty!" << endl;
else
{ while (move != NULL)
{ // Display details for what temp points to
cout << "Name : " << move->name << " ";
cout << "Age : " << move->age << " ";
cout << "Height : " << move->height;
if (move == current)
cout << " <-- Current node";
cout << endl;
move = move->next;

}
cout << "End of list!" << endl;
}
}

void delete_start_node()
{ node *temp;
temp = head;
head = head->next;
delete temp;
}

void delete_end_node()
{ node *move, *prev;
if (head == NULL)
cout << "The list is empty!" << endl;
else
{ move = head;
if (move->next == NULL)
{ delete move;
head = NULL;
}
else
{ while (move->next != NULL)
{ prev = move;
move = move->next;
}
delete move;
prev->next = NULL;
}
}
}

void move_current_on ()
{ if (current->next == NULL)
cout << "You are at the end of the list." << endl;
else
current = current->next;
}

void move_current_back ()
{ if (current == head)
cout << "You are at the start of the list" << endl;
else
{ node *prev; // Declare the pointer
prev = head;

while (prev->next != current)
{ prev = prev->next;
}
current = prev;
}
}


void update_list()
{ node *move;
char name_in[20];
int found;

cout << "Please enter the name of the person to be updated: ";
cin >> name_in;
move=head;
found=0;
while(move != NULL && found == 0)
{
if (strcmp(name_in,move->name) == 0)
{
cout << "Please enter the age of the person : ";
cin >> move->age;
cout << "Please enter the height of the person : ";
cin >> move->height;
found = 1;
}
else
{
move= move->next;
}
}
if(found==0)
{
cout << "name is not there: ";
}

}







void main()
{ head = NULL;
do
{
display_list();
cout << endl;
cout << "Please select an option : " << endl;
cout << "0. Exit the program." << endl;
cout << "1. Add a node to the begining of the list." << endl;
cout << "2. Add a node to the end of the list." << endl;
cout << "3. Delete the start node from the list." << endl;
cout << "4. Delete the end node from the list." << endl;
cout << "5. Display The List ." << endl;
cout << "6. update an exicting node ." << endl;
cout << "7. Move the current pointer forword one node." << endl;
cout << "8. Move the current pointer back one node." << endl;
cout << endl << " >> ";
cin >> option;
}
while (option)
{
case 1 : add_node_at_begining(); break;
case 2 : add_node_at_end(); break;
case 3 : delete_start_node(); break;
case 4 : delete_end_node(); break;
case 5 : display_list(); break;
case 6 : update_list(); break;
case 7 : move_current_on(); break;
case 8 : move_current_back(); break;
}
}
}
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
Admin
Admin


عدد المساهمات : 30
تاريخ التسجيل : 29/02/2012

مُساهمةموضوع: رد: برنامج القائمة المتصلة في مادة تركيب البيانات   الأربعاء أبريل 11, 2012 5:43 pm

مشكوور على الموضوع
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://architectureside.ahlamontada.org
 
برنامج القائمة المتصلة في مادة تركيب البيانات
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات الجانب المعماري  :: الاقسام الهندسية الاخرى :: قسم هندسة الحاسوب وتكنولوجيا المعلومات-
انتقل الى: