View Full Version : در باره مبحث رشته های پیوندی چند تا درخواست دارم
roberty
دوشنبه 07 آبان 1386, 11:28 صبح
سلام خیلی معذرت میخوام ولی تو یکی از تاپیکهای این فروم یکی از بچه ها نوشته بود که برای یاد گیری لیست های پیوندی برید کتاب ساختمان داده مهندس نژاد قمی رو بخونید !!!!برام عجیبه!!!!الان ترم سه مهندسی سخت افزار هستم و استادمون برای درس مبانی کامپیوتر سی پلاس پلاس رو شروع کرد و تابع و آرایه و pointer رو درس داد و برای برنامه نویسی پیشرفته (( این ترم این درس رو دارم )) از فصل پنج کتاب سی پلاس پلاس نژاد قمی پرید فصل سیزده و شروع کرده به تدریس لیست پیوندی برای درس برنامه سازی پیشرفته !!!الان هم من چون با مفهوم کلاس و توابع سازنده و مخرب آشنایی ندارم نمیتونم از کدهایی که تو کتاب سی پلاس پلاس نژآد قمی نوشته شده استفاده کنم !!! و تازه با خوندن این تاپیک متوجه شدم چیزی که الان داره برای ما تدریس میشه مربوط به درس ساختمان داده هست نه برنامه نویسی پیشرفته !!!(( خداییش گیج شدم ))مخواستم بدونم تو دانشگاه های شما برای مبانی کامپیوتر و مخصوصا برنامه نویسی پیشرفته چه موضوعاتی و چه کتابی تدریس میشه و دوم اینکه اگر ممکنه یکی دوتا برنامه خیلی ساده از لیست پیوندی (( مثل درج یک گره یا حذف یک گره )) در محیط سی پلاس پلاس برام بذارین خیلی خیلی بهم لطف کردین !!!ممنونم
emad_67
دوشنبه 07 آبان 1386, 15:40 عصر
سلام
لیست پیوندی برای ساختمان داده است ولی توی پیشرفته هم بعضی جاها تدریس میشه.برای ما هم همین طور بود. لیست پیوندی رو میشه با struct هم پیاده سازی کرد و معمولا هم زمانی که کلاس ها رو درس ندادن همین کارو میکن. البته من کتاب جعفرنژاد رو نخوندم. و در مبانی و پیشرفته از روی کتاب دیتل ترجمه قلزم خوندم. به نظرم کتاب خوبی هم هست.
یه نمونه برنامه هم که پیاده سازی لیست پیوندی با struct هست برات میزارم. شاید به دردت خورد.تابع های درج،خذف، serach رو هم داره.
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
struct student
{
char fname[80];
char lname[80];
int number;
float grade[8],sum,avg;
char field[20];
int year;
student *next;
};
/****** function *****/
void print();
void del(int);
void insert();
void avg(student *);
student *search(int);
/********************/
student *head=new student;
void main()
{
int n,arg;
head->next=NULL;
student *p;
while(1)
{
cout<<"select one:\n\n"
<<"1) - import student to list.\n"
<<"2) - delete student from list.\n"
<<"3) - serach a student from list.\n"
<<"4) - print list.\n";
cin>>n;
switch(n)
{
case 1:
insert();
break;
case 2:
cout<<"Enter student number for delete:";
cin>>arg;
del(arg);
break;
case 3:
{
cout<<"Enter student number for search:";
cin>>arg;
p=search(arg);
if(p!=NULL)
{
system("cls");
cout<<"student that you searched it is:\n\n"
<<"first name:"<<p->fname<<endl
<<"last name:"<<p->lname<<endl
<<"number:"<<p->number<<endl
<<"grades:";
for(int i=0;i<8;i++)
cout<<p->grade[i]<<" ";
cout<<endl;
cout<<"average:"<<p->avg<<"\n\n\n";
}
else
cout<<"Not found!!\n\n";
}
break;
case 4:
print();
break;
default:
cout<<"NOT exist!!\n\n";
}
}
}
/**************** insert ****************/
void insert()
{
student *person,*p,*q;
person=new student;
cout<<"enter student first name:";
cin>>person->fname;
cout<<"enter student last name:";
cin>>person->lname;
cout<<"enter student number:";
cin>>person->number;
cout<<"enter year that student entered to university:";
cin>>person->year;
cout<<"enter field:";
cin>>person->field;
cout<<"enter student grades:";
for(int i=0;i<8;i++)
cin>>person->grade[i];
cout<<endl<<endl;
avg(person);
if(head->next==NULL)
{
head->next=person;
person->next=NULL;
}
else
{
p=head;
q=head->next;
while(q && person->number>q->number)
{
p=q;
q=q->next;
}
person->next=q;
p->next=person;
}
}
/******************* delete ********************/
void del(int x)
{
student *p=head,*q=head->next;
while(q)
{
if(q->number==x)
{
p->next=q->next;
delete q;
cout<<"delete student with number:"<<x<<endl;
return;
}
p=q;
q=q->next;
}
cout<<"Not found student with number:"<<x<<"!!"<<endl;
}
/******************* search ********************/
student *search(int x)
{
student *p=head->next;
while(p)
{
if(p->number==x)
return p;
p=p->next;
}
return p;
}
/******************* average *******************/
void avg(student *p)
{
p->sum=0;
for(int i=0;i<8;i++)
p->sum+=p->grade[i];
p->avg=p->sum/8;
}
/********************* print **********************/
void print()
{
student *p=head->next;
system("cls");
cout<<"\n"<<setiosflags(ios::left)<<setw(12)<<"number"<<setw(15)<<"first name"<<setw(15)<<"last name"<<setw(10)<<"year"
<<setw(12)<<"field"<<setw(15)<<"average"<<endl<<endl;
while(p)
{
cout<<setw(12)<<p->number
<<setw(15)<<p->fname
<<setw(15)<<p->lname
<<setw(10)<<p->year
<<setw(12)<<p->field
<<setw(15)<<p->avg<<endl;
p=p->next;
}
}
roberty
سه شنبه 08 آبان 1386, 10:35 صبح
ممنونم عماد عزیز !!! خیلی لطف کردی !!!برنامه خیلی خوبی نوشتی !!! بعد از لیست پیوندی تدریس مبحث " کلاس " شروع میشه دیگه ؟؟ درسته ؟؟
emad_67
سه شنبه 08 آبان 1386, 15:18 عصر
بله معمولا این طور است
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.