PDA

View Full Version : ساختمان داده - درج عنصر



زهره صالحی
جمعه 21 آبان 1389, 10:43 صبح
سلام
می خوام یه برنامه بنویسم که یک عنصر جدید را طوری درج نماید که لیست مرتب باقی بماند ؟
اینو نوشتم منتها نمی فهمم چرا اشتباهه !
میشه یکی به راهنمایی کنه


#include<iostream.h>
struct Node
{
int info;
Node *next;
}*first , *tmp;
void nodes ()
{
tmp = new Node;
first = tmp;
int x;
cin >> x;
tmp->info = x;
do
{
cin >> x;
tmp->next = new Node;
tmp = tmp->next;
tmp->info = x;
tmp->next = NULL;
}while(x > 0);
}

void SetNumber()
{
tmp = first;
int x;
cout << "Enter Number :: \n";
cin >> x;
//darg dar bian onsor aval ta akhar ast !?
while(tmp->next != NULL)
{
Node *help = new Node;
if(tmp->info > x)
{
help->next = tmp->next;
tmp->next = help;
help->info = x;
break;
}
}
}
void print ()
{
Node *tmp = first;
cout << "Answer :: \n";
while (tmp != NULL)
{
cout << tmp->info << endl;
tmp = tmp->next;
}
}
void main ()
{
nodes();
SetNumber();
print();
}

tdkhakpur
جمعه 21 آبان 1389, 11:31 صبح
با ساختار


struct Node
{
int info;
Node *next;
}*first , *tmp

نمیتوانید این کار رو انجام بدید می بایست ساختار تان بتواند به نود بعدی و قبلی اشاره کند مثل


struct Node
{
int info;
Node *prev;
Node *next;
}*first , *tmp

در این صوررت تنها کار یکه باید انجام بدید پیدا کرد محل نود جدید یعنی بررسی دو نود قبلی و بعدی و مقایسه محتوای آنها با عدد جدید و قرار دادن نود جدید در بین این دو نود.

زهره صالحی
جمعه 21 آبان 1389, 11:43 صبح
سلام
این سوال رو باید بصورت تک پیوندی حلش کنم .
تو این سوال فرض بر اینه که اولین عنصر min و آخرین عنصر max است .
تا جایی که می دونم همه کارا رو درست انجام دادم !
چرا جواب نمی ده نمی دونم .

tdkhakpur
جمعه 21 آبان 1389, 15:54 عصر
این سوال رو باید بصورت تک پیوندی حلش کنم
ولی احتیاج به لینک قبلی دارید.


#include <iostream.h>
#include <conio.h>
struct Node
{
int info;
Node *next;
}*first , *tmp;
void nodes (void)
{
tmp = new Node;
first = tmp;
int x;
cin >> x;
tmp->info = x;
while(x > 0){
tmp->next = new Node;
cin >> x;
tmp = tmp->next;
tmp->info = x;
tmp->next = NULL;
}
}
void SetNumber()
{
Node *prevNode;
prevNode = tmp = first;
int x;
cout << "Enter Number :: \n";
cin >> x;
//darg dar bian onsor aval ta akhar ast !?
while(tmp != NULL)
{
if(tmp->info > x)
{
Node *help = new Node;
help->next = tmp;
prevNode->next = help;
help->info = x;
break;
}
prevNode = tmp;
tmp = tmp->next;
}
}
void print ()
{
Node *tmp = first;
cout << "Answer :: \n";
while (tmp != NULL)
{
cout << tmp->info << endl;
tmp = tmp->next;
}
}
void DelNodes(Node* help)
{
if (help == NULL)
return;
else
DelNodes(help->next);
delete [] help;
}
void main ()
{
nodes();
SetNumber();
print();
DelNodes(first);
getch();
}

موفق باشید.