Advertisement
Adytzu04

L2 SDA

Mar 11th, 2013
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. //h
  2.  
  3. #pragma once
  4. typedef int Atom;
  5. typedef struct Nod{
  6.     Atom data;
  7.     Nod *leg;
  8. }*PNod Lista;
  9. void insinfata(Lista &l,Atom a);
  10. void afis(Lista l);
  11. int apartine(Atom a,Lista l);
  12. void insPozk(Atom a, int k, Lista &l);
  13. void sterge(Lista &l,int k);
  14. void afiscoada(Lista l,int k);
  15.  
  16. //c
  17.  
  18. #include<assert.h>
  19. #include<iostream>
  20. using namespace std;
  21. void insinfata(Lista &l,Atom a);
  22. {
  23.     PNod p=new Nod;
  24.     assert(p);
  25.     p->data=a;
  26.     p->leg=l;
  27.     l=p;
  28. }
  29. void afis(Lista l);
  30. {
  31.     while(l)
  32.     {
  33.         cout<<l->data<<" ";
  34.         l=l->leg;
  35.     }
  36.     cout<<endl;
  37. }
  38. int apartine(Atom a,Lista l);
  39. {
  40.     int gasit=0;
  41. while(l&&!gasit)
  42. {
  43.     if(a==l->data)
  44.         gasit=1;
  45.     l=l->leg;
  46. }
  47. return gasit;
  48. }
  49. void insPozk(Atom a,int k,Lista &l);
  50. {
  51.     if(k<0)
  52.         return;
  53.     if(k==0)
  54.         insinfata(l,a);
  55.     else
  56.     {
  57.         PNod elcrt,elurm,p;
  58.         elcrt= l;
  59.         while( elcrt &&(k>1))
  60.             elcrt=elcrt->leg;
  61.         --k;
  62.         if(elcrt)
  63.         {
  64.             elurm=elcrt->leg;
  65.             PNod p=new Nod;
  66.             assert(P);
  67.             p->data=a;
  68.             p->leg=elurm;
  69.             elcrt=p;
  70.         }
  71.     }
  72. }
  73. void sterge(Lista &l,int k);
  74. {
  75.     if(k<0) return;
  76.     if(0==k);
  77.     {
  78.         PNod p=l;
  79.         if(l)
  80.         {
  81.             l=l->leg;
  82.             delet p;
  83.         }
  84.     }
  85.     else{
  86.         Pnod q=l;
  87.         while(q &&(k>1)){
  88.             q=q->leg;
  89.             --k;
  90.         }
  91.         if(q){
  92.             PNod p=q->leg;
  93.             if(p){
  94.                 q->leg=p->leg;
  95.                 delete p;
  96.             }
  97.         }
  98.     }
  99. }
  100. void afiscoadak(Lista l,int k);
  101. {
  102.     if(k<0) return;
  103.     Atom **carusel=new(Atom*)[k+1];
  104.     assert(carusel);
  105.     memset((void*)carusel,0,(k+1)sizeof(Atom));
  106.     int loc =0;
  107.     while(l)
  108.     {
  109.         carusel[loc];
  110.         l=l->leg;
  111.         loc=(loc+1)%(k+1);
  112.     }
  113.         if(carusel[loc])
  114.         {
  115.             cout<<carusel[loc]->data;
  116.         else    cout<<"lista prea scurta";
  117.             delete[]carusel;
  118.         }
  119. }
  120.  
  121. //main
  122.  
  123. int main(void)
  124. {
  125.     lista l=0;atom a;int k,optiune;
  126.     do
  127.     {
  128.         optiune=meniul;
  129.         switch(optiune)
  130.         {
  131.         case 0: eliberare(l);
  132.         case 1: cout<<"dati atomul"; break;
  133.             cin>>a;
  134.         inserareF(l,a);break;
  135.         case 2: parcurgere(l); break;
  136.         case 3: cout<<"dati atomul";
  137.             cin>>a;
  138.             if(testE(l,a))
  139.                 cout<<"gasit \n";
  140.             else cout<<"negasit \n";break;
  141.         case 4:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement