السلام عليكم
ارجو مساعدتي في ايجاد الخطأ في الكود
اولا فكره البرنامج هي لينكد ليست فارغه يتم الاضافه فيها من الامام عدد من العقد يتم تحديد عدد هذه العقد من قبل المستخدم
أي ان البرنامج يطلب من المستخدم ادخال عدد الطلاب
ثم يطلب اضافاه بيانات الطلاب
بعد ذلك يتم طباعه القائمه كامله
مشكلتي في البرنامج انه يطبع فقط اخر عقده تم اضافتها والمفترض انه يطبع القائمه كامله
فارجو مساعدتي
هذا الكود
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct student
{int no;
char name[20];
struct student *next;};
typedef struct student *ptr;
typedef ptr list;
student* insert_to_front(list head,int num,char name[20])
{cout<<"enter the number & name in the front of list:";
cin>>num>>name;
student *p;
p=(student*)malloc(sizeof(student));
p->no=num;
strcpy(p->name,name);
p->next=head;
head=p;
return head;}
void traverse(list head)
{student *p1=head;
while(p1!=NULL)
{cout<<p1->no<<"\t"<<p1->name<<endl;
p1=p1->next;}}
void main()
{int size,n;
char name[20];
cout<<"enter the number of student";
cin>>size;
for(int i=1;i<=size;i++)
{cout<<"enter the number & name in the front of list:";
cin>>n>>name;}
struct student *head;
head=(student *)malloc(sizeof(struct student));
struct student *p=head;
p->no=n;
strcpy(p->name,name);
p->next=NULL;
cout<<"list after insert to front: "<<endl;
for(int i=1;i<=size;i++){
traverse(head);
head=insert_to_front(head,n,name);}
getch();
}