Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<cstdlib>
  3.  
  4. struct lista
  5. {
  6. int dana;
  7. struct lista *next,*prev;
  8. }*head=NULL,*element=NULL,*temp=NULL;
  9.  
  10.  
  11.  
  12. void dodaj(struct lista *&head,int x){
  13. if(head==NULL)
  14. {
  15. head=new lista ;
  16. head->dana=x;
  17. head->next=head;
  18. head->prev=head;
  19.  
  20. } else{
  21.  
  22. if(element==NULL)
  23.  
  24. {
  25. element=new lista ;
  26. element->dana=x;
  27. head->next=element;
  28. element->prev=head;
  29. element->next=head;
  30. head->prev=element;
  31. temp=element;
  32. element->next->prev= element ;
  33.  
  34. }
  35.  
  36. else{
  37.  
  38. element=new lista ;
  39. element->dana=x;
  40. temp->next=element;
  41. element->prev=temp;
  42. element->next=head;
  43. head->prev=element;
  44. temp=element;
  45. }
  46. }
  47. }
  48. void przenies_pokaz(struct lista* head, int n,int m,int k){
  49. struct lista *glowa ;
  50. glowa=head;
  51.  
  52. int z,h ;
  53. for(z=0;z<n-1;z++){
  54. glowa=glowa->next ;
  55.  
  56. }
  57.  
  58. printf("Liczba ktora przenosisz :%d\n",glowa->dana) ;
  59. glowa->prev->next = glowa->next;
  60. glowa->next->prev = glowa->prev;
  61.  
  62. struct lista* p;
  63.  
  64. p=glowa;
  65.  
  66. for(h=0;h<k;h++)
  67. {
  68. p=p->next;
  69. }
  70.  
  71. p->next->prev = glowa;
  72. glowa->next = p->next;
  73. p->next = glowa;
  74. glowa->prev = p;
  75.  
  76. }
  77.  
  78.  
  79. void pokaz(struct lista *head)
  80.  
  81. {
  82.  
  83. struct lista *glowa;
  84. glowa=head;
  85. printf("\n------------------------\n");
  86. printf("%d ",head->dana);
  87. head=head->next;
  88. while(head!=glowa){
  89. printf("%d ",head->dana);
  90. head=head->next;
  91. }
  92. printf("\n------------------------\n");
  93.  
  94. }
  95.  
  96.  
  97.  
  98. int main(){
  99.  
  100. int m,n,k,i,x ;
  101. printf("##### Lista dwukierunkowa cykliczna #####\n");
  102. printf("ile elementow ma zawierac lista?");
  103. scanf("%d",&m);
  104. printf("Ktory element listy chcesz przeniesc?\n");
  105. scanf("%d",&n);
  106. printf("O ile pozycji chcesz przenieść rekord? \n");
  107. scanf("%d",&k);
  108.  
  109.  
  110.  
  111.  
  112.  
  113. for(i=1;i<=m;i++)
  114. {x=rand()%100 ;
  115. dodaj(head,x);
  116.  
  117. }
  118. pokaz(head);
  119.  
  120. struct lista* tmp = head->next;
  121.  
  122. if(k>0) przenies_pokaz(head,n,m,k);
  123.  
  124. if(n==1||(n+k)%m==1) head=tmp;
  125.  
  126. pokaz(head);
  127.  
  128. printf("\n\n");
  129. system("PAUSE");
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement