PDA

View Full Version : چاپ لیست یک در میان



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



#include<iostream.h>
struct Node
{
int info;
Node *next;
}*first , *tmp;
void nodes (void)
{
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 list(Node* help)
{
if (help->next == NULL)
return;
else
{
cout << help->info << endl;
list(help->next->next);
}
}

int main ()
{
nodes();
Node *help = first;
list(help);
}

tdkhakpur
جمعه 21 آبان 1389, 11:23 صبح
یه مقدار در مورد حرکت به نود بعدی اشتباه داشتید و همچنین سعی کنید در آخر کار همیشه حافظه رو آزاد کنید


#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 list(Node* help)
{
if (help == NULL)
return;
else
{
cout << help->info << endl;
list(help->next);
}
}
void DelNodes(Node* help)
{
if (help == NULL){
delete [] help;
return;
}
else
DelNodes(help->next);
}
int main ()
{
nodes();
Node *help = first;
list(help);
help = first;
DelNodes(help);
getch();
}

زهره صالحی
جمعه 21 آبان 1389, 11:35 صبح
ممنون از شما
اینو یادم رفته بود بگم این برنامه باید یک در میان اعداد رو چاپ کنه .
ولی الان مشکل حل شد .
این تیکه رو تغییر دادم همونی شد که می خواستم .

void list(Node* help)
{
if (help == NULL)
return;
else
{
cout << help->info << endl;
list(help->next->next);
}
}

tdkhakpur
جمعه 21 آبان 1389, 15:41 عصر
داخل کدهای ارسالی بالا در قسمت آزاد سازی حافظه اشکال وجود داشت اصلاح شد . شرمنده.


void DelNodes(Node* help)
{
if (help == NULL)
return;
else
DelNodes(help->next);
delete [] help;
}