Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Feb 27th, 2012  |  syntax: C++  |  size: 1.68 KB  |  views: 54  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <iostream.h>
  2.  
  3. typedef struct un_nod
  4. {
  5.         int info;
  6.         un_nod *urm;
  7. }TNod;
  8.  
  9. TNod *lista;
  10. int n;
  11.  
  12. TNod *creare_lista()
  13. {
  14.         TNod *prim, *ultim, *p;
  15.        
  16.         int i;
  17.        
  18.         cout<<"Dati n mai mare ca 3\n n=";
  19.         cin>>n;
  20.        
  21.         prim=new TNod;
  22.         cin>>prim->info;
  23.        
  24.         prim->urm=NULL;
  25.         ultim=prim;
  26.        
  27.         for(i=2;i<=5;i++)
  28.         {
  29.                 p=new TNod;
  30.                 cin>>p->info;
  31.                 p->urm=NULL;
  32.                 ultim->urm=p;
  33.                 ultim=p;
  34.         }
  35.        
  36.         return prim;
  37. }
  38.  
  39.  
  40. TNod *sterg(TNod *p, int k)
  41. {
  42.         TNod *q, *r;
  43.         int i;
  44.         q=p;
  45.         for(i=2;i<=k-1;i++)
  46.                 q=q->urm;
  47.         r=q->urm;
  48.         q->urm=r->urm;
  49.         delete r;
  50.         return p;
  51. }
  52.  
  53. TNod *sterg_sfarsit(TNod *p)
  54. {
  55.         TNod *q;
  56.         q=p;
  57.         while(q->urm->urm) q=q->urm;
  58.         delete q->urm;
  59.         q->urm=NULL;
  60.         return p;
  61. }
  62.  
  63. TNod *sterg_inceput(TNod *p)
  64. {
  65.         TNod *q;
  66.         q=p->urm;
  67.         delete p;
  68.         return q;
  69. }
  70.  
  71.  
  72. void afisare(TNod *p)
  73. {
  74.         while(p)
  75.         {
  76.                 cout<<p->info<<", ";
  77.                 p=p->urm;
  78.         }
  79.         cout<<"\n";
  80. }
  81.  
  82. TNod *sterge_3_elemente(TNod *prim) //stergem cele mai mici 3 elemente din lista
  83. {
  84.         int i,j;
  85.         int minim;
  86.         TNod *r, *aux;; //de la return
  87.        
  88.         r=prim;
  89.        
  90.         for(i=1;i<=3;i++)
  91.         {
  92.                 minim=999;
  93.                 aux=r;
  94.                 while(aux)
  95.                 {
  96.                         if(aux->info<minim)
  97.                                 minim=aux->info;
  98.                         aux=aux->urm;
  99.                 }
  100.                
  101.                 aux=r;
  102.  
  103.                 j=1;
  104.                 while(aux)
  105.                 {
  106.                         if(aux->info==minim)
  107.                         {
  108.                                 break;
  109.                         }
  110.                         aux=aux->urm;
  111.                         j++;
  112.                 }
  113.                
  114.                 if(j==1)
  115.                         r=sterg_inceput(r);
  116.                 else if(j==n)
  117.                         r=sterg_sfarsit(r);
  118.                 else
  119.                         r=sterg(r, j);
  120.                
  121.                 cout<<"Lista dupa stergerea "<<i<<" este: ";
  122.                 afisare(r);
  123.         }
  124.         return r;
  125. }
  126.  
  127. int main()
  128. {
  129.  
  130.         lista=creare_lista();
  131.        
  132.         cout<<"Lista este: \n";
  133.         afisare(lista);
  134.        
  135.         lista=sterge_3_elemente(lista);
  136.        
  137.         cout<<"Lista la sfarsit este: \n";
  138.         afisare(lista);
  139.         return 0;
  140. }
clone this paste RAW Paste Data