em mới học về DSLK...lý thuyết..gọi là tạm hiểu rồi ...
giờ có 2 vần đề mong các bác giải thích dùm(nghĩ hoài ko ra ...)
Em nghĩ nếu giải đáp đựoc 2 khúc mắc này thì ...học DSLK phần sau sẽ dễ hiếu hơn.Mong các bác giúp đỡ
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
typedef struct sn
{int a;
 sn * pnext;
 };
typedef struct list
{sn * phead;
 sn * ptail;
} ;
void nhap(sn & x)
{cout<<"Nhap phan tu vao"<<endl;
 cin>>x.a;
}
void xuat(sn x)
{
  cout<<x.a<<endl;
}
sn *getsn(int x)
{sn * p;
 p=new sn;
 if(p==NULL)
  {cout<<"Ko du vung nho"<<endl;
   exit(1);
  }
 else
  {p->a=x;
   p->pnext=NULL;
  }
  return p;
}
void addfirt(list & l,sn *ele)
{if(l.phead==NULL)
  {l.phead=ele;
   l.ptail=l.phead;
  }
 else
  {ele->pnext=l.phead;
   l.phead=ele;
  }
 }
void add(list & l,sn *p,sn * q)
{if(q!=NULL)
  {p->pnext=q->pnext;
   q->pnext=p;
     if(q==l.ptail)
	l.ptail=p;
  }
 else
  addfirt(l,p);
}
void main()
{clrscr();
 int i,n;
 sn x;
 list l;
 sn * p;
 sn * q;
 sn * phead;
 l.phead=NULL;
 sn * tam;
 cout<<"Nhap so node vao"<<endl;
 cin>>n;
 for(i=0;i<n;i++)
 {
  nhap(x)   ;
  addfirt(l,getsn(x.a));
  }
i=0;
cout<<"Nhap du lieu cho node can chen"<<endl;
nhap(x);
q=getsn(x.a);
cout<<"Muon chen vao vitri nao?" <<endl;
cin>>n;
p=l.phead;
while((p!=NULL)&&(i<n-2))
{p=p->pnext; i=i+1;
}
add(l,q,p);
cout<<"Xuat danh sach sau khi chen:"<<endl;
tam=l.phead;
while(tam!=NULL)
{
 xuat(*tam);
 tam=tam->pnext ;
 }
 getch();
}
Đó cái tạm hiểu của em là thế đó..một mớ code dài dòng..nhờ các bác rút gọn dùm..em cái
còn cái ..làm bằng class..thì sao mà nó cứ in ra so 0 đầu tiên thay vì in ra giá trị của node cuồi cùng@@
Code:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
typedef struct sn
{int a;
 sn * pnext;
 };
class list
{private :sn * phead;
	  sn * ptail;
 public:
   list();
   friend sn*  getsn(int x);//tao ra  1node
   void addfirt(sn *ele)  ;//them node vao dau`list
   void xuat1();
};

list ::list()
{
 phead=NULL;
 ptail=NULL;
}
void nhap(sn & x)
{cout<<"Nhap phan tu vao"<<endl;
 cin>>x.a;
}
void xuat(sn x)
{
  cout<<x.a<<endl;
}

void list::xuat1()
{sn * p; int i=1;
 p=phead;
 while(p!=NULL)
   {p=p->pnext;
    xuat(*p);
   }
}

sn *getsn(int x)
{sn * p;
 p=new sn;
 p->a=x;
 p->pnext=NULL;
 return p;
}
void list::addfirt(sn *p)
{if(phead==NULL)
  { phead=p;
    ptail=phead;
  }
 else
  {p->pnext=phead;
   phead=p;
  }
}

void main()
{clrscr();
list l;
sn * p;sn * q;
sn x;
int n;
cout<<"Nhap so phan tu cua list"<<endl;
cin >>n;
for(int i=1;i<=n;i++)
 { nhap(x);
   q=getsn(x.a);
   l.addfirt(q);
 }
 l.xuat1() ;
 getch();
}
Đó ..trăm sự nhờ các bác..giúp đàn em với