PDA

View Full Version : سوال: برنامه حذف در لیست پیوندی



jila_68
سه شنبه 31 فروردین 1389, 22:02 عصر
سلام
میشه مشکل برنامه ای رو که نوشتم بگید و بگید که چرا درست کار نمی کنه
این برنامه نام و شماره دانشجویی n دانشجو رو میگیره و در یک لیست پیوندی یکطرفه قرار میده تا اینجا که درست کار میکنه ولی حالامن می خوام یه شماره دانشجویی بهش بدم و اون رو توی لیست پیداکنه اگه باشه حذفش کنه اگه نباشه یه پیغام بده ولی این کدی که من نوشتم میاد از اون عنصر به بعد رو برام چاپ میکنه


#include<iostream.h>
#include<conio.h>
#include<stdio.h>
struct node{
char name[30];
int stno;
node *link;
}*p,*q,*start,*temp;
int main()
{
clrscr();
int n,i,num;
start=NULL;
cout<<"please entera number=";
cin>>n;
for (i=1;i<=n;i++)
if (start==NULL)
{
p=new(node);
cout<<"please enter a student 1's name=";
gets(p->name);
cout<<"please enter a 1's stno=";
cin>>p->stno;
start=p;
}
else
{
q=new(node);
cout<<"please enter a student "<<i<<"'s name=";
gets(q->name);
cout<<"please enter student "<<i<<"'s stno=";
cin>>q->stno;
p->link=q;
q->link=NULL;
p=q;
}
cout<<"please enter a number student=";
cin>>num;
p=start;
while(start != NULL)
{
if(start->stno==num)
{
p->link=start->link;
p->link=NULL;
delete p;
}
else cout<<"not found";
start=start->link;
p=start;
for( ;p; )
{
cout<<p->name<<"->"<<p->stno<<endl;
p=p->link;
}
}
getch();
return 0;
}

jila_68
چهارشنبه 01 اردیبهشت 1389, 17:13 عصر
دوست عزیز احساس میکنم که یه کم کدهات مبهم هستش ویه چیزه دیگه اینکه چرا از دستور goto استفاده کردی ؟ من فقط قسمت حذفش مشکل داشت و میخواستم که مشکل این قسمتش حل بشه نه اینکه کل برنامه تغییر کنه

jila_68
چهارشنبه 01 اردیبهشت 1389, 19:37 عصر
دوست عزیز چون احساس میکنم کدها خیلی تغییر کردند قسمت حذف رو برام توضیح بدین .
درضمن اصلاً با دستورات cinو cout نمیشه بنویسم

jila_68
پنج شنبه 02 اردیبهشت 1389, 13:28 عصر
ممنون دوست عزیز ولی متاسفانه من نتونستن تا حالا خروجی این برنامه رو ببینم چون برای تعریف نوع bool ازم ارور میگیره (در ضمن من با c++تحت داس دارم کار میکنم).
در این رابطه کمکم کنید ممنون میشم

hmrbesharat
شنبه 04 اردیبهشت 1389, 00:26 صبح
اين كدا امتحان كن
فقط قسمت حذف رو تغيير دادم


#include<iostream.h>
#include<conio.h>
#include<stdio.h>
struct node{
char name[30];
int stno;
node *link;
}*p,*q,*start,*temp;
int main()
{
int n,i,num;
start=NULL;
cout<<"please entera number=";
cin>>n;
for (i=1;i<=n;i++)
if (start==NULL)
{
p=new(node);
cout<<"please enter a student 1's name=";
gets(p->name);
cout<<"please enter a 1's stno=";
cin>>p->stno;
start=p;
}
else
{
q=new(node);
cout<<"please enter a student "<<i<<"'s name=";
gets(q->name);
cout<<"please enter student "<<i<<"'s stno=";
cin>>q->stno;
p->link=q;
q->link=NULL;
p=q;
}
cout<<"please enter a number student=";
cin>>num;
node *first,*secound;char found=0;
if(start->stno==num)
{
first=start;
start=start->link;
delete (first);
}
else
{
first=start; secound=first->link;
while(secound!=NULL && secound->stno!=num)
{
first=secound;
secound=first->link;
}
if(secound)
{
first->link=secound->link;
delete(secound);
f=1;
}
}
if(!f)
cout<<"not Found Num :"<<num<<"\n";

getch();
return 0;
}