Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1. Дадена е двострано поврзана листа чии што јазли содржат по еден природен број. Листата треба да се подели на две резултантни листи, т.ш. во првата листа треба да се сместат сите јазли кои содржат броеви помали или еднакви на просекот на листата, а во втората сите јазли кои содржат броеви поголеми од просекот на листата. Јазлите во резултантните листи се додаваат според обратен редослед од оној по кој по кој се појавуваат во дадената листа (т.е. прво се започнува со разгледување на последниот јазол од влезната листа и се додава во соодветната резултантна листа, па претпоследниот итн...).
  2.  
  3. Во првиот ред од влезот е даден бројот на јазли во листата, а во вториот ред се дадени броевите од кои се составени јазлите по редослед во листата. Во првиот ред од излезот треба да се испечатат јазлите по редослед од првата резултантна листа (броеви помали или еднакви на просекот на листата), во вториот ред од втората (броеви поголеми од просекот на листата) .
  4.  
  5. Име на класа (за Java): PodeliListaProsek
  6.  
  7. Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  8.  
  9. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  10.  
  11. #include<stdio.h>
  12. #include<malloc.h>
  13.  
  14. //Implementacijata na dvojnata lista e so jazel vodich
  15.  
  16. typedef struct element{
  17.         int info;
  18.         struct element *llink, *rlink;
  19. }node;
  20.  
  21. node * novaDvojna()
  22. {
  23.       node *v = (node *)malloc(sizeof(node));
  24.       v -> llink = v;
  25.       v -> rlink = v;
  26.       return v;
  27. }
  28.  
  29. void dodadi(node **pok_v, int broj){
  30.     //dodavanja na broj na kraj na dvojnata lista
  31.     node *temp;
  32.     temp=(node *)malloc(sizeof(node));
  33.     temp->info=broj;
  34.     temp -> llink = (*pok_v) -> llink;
  35.     temp -> rlink = *pok_v;
  36.     (*pok_v) -> llink -> rlink = temp;
  37.     (*pok_v) -> llink = temp;
  38. }
  39.  
  40. void podeli(node *l, node *lpomali, node *lpogolemi){
  41.    
  42.     int brojac=0,prosek=0;
  43.     node *k=NULL;
  44.     k=l;
  45.     l=l->llink;
  46.     while(l!=k)
  47.     {
  48.         prosek+=l->info;
  49.         brojac++;
  50.         l=l->llink;
  51.     }
  52.     prosek/=brojac;
  53.     l=l->llink;
  54.     while(l!=k)
  55.     {
  56.        
  57.         if(l->info<=prosek)
  58.         {
  59.               dodadi(&lpomali,l->info);
  60.         }
  61.         else if(l->info>prosek)
  62.         {
  63.             dodadi(&lpogolemi,l->info);  
  64.         }
  65.        
  66.         l=l->llink;
  67.      
  68.     }
  69. }
  70.  
  71. int main(){
  72.     node *lista=NULL, *pomali=NULL, *pogolemi=NULL;
  73.     int i,n,info;
  74.  
  75.     lista=novaDvojna();
  76.     scanf("%d",&n);
  77.     for(i=0;i<n;i++)
  78.     {
  79.        scanf ("%d", &info);
  80.        dodadi(&lista,info);
  81.     }
  82.  
  83.     pomali=novaDvojna();
  84.     pogolemi=novaDvojna();
  85.  
  86.     podeli(lista, pomali, pogolemi) ;
  87.  
  88.     //Pechatenje na pomali i ednakvi od prosekot
  89.     node *p=pomali->rlink;
  90.     while (pomali != p)
  91.     {
  92.         printf ("%d", p->info);
  93.         if(p->rlink!=pomali) printf (" ");
  94.         p=p->rlink;
  95.     }
  96.     printf ("\n");
  97.  
  98.     //Pechatenje na pogolemi od prosekot
  99.     p=pogolemi->rlink;
  100.     while (pogolemi != p)
  101.     {
  102.         printf ("%d", p->info);
  103.         if(p->rlink!=pogolemi) printf (" ");
  104.         p=p->rlink;
  105.     }
  106.     printf ("\n");
  107.  
  108.     return 0;
  109. }
  110. Sample input
  111. 5
  112. 4 2 1 5 3
  113. Sample output
  114. 3 1 2
  115. 5 4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement