Advertisement
Guest User

kyrs

a guest
Dec 11th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 15.99 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<ctype.h>
  4.  
  5.  
  6. struct ochered2
  7. {  int z;
  8.     ochered2 *ptr;
  9. };
  10. struct sequenceVnesh
  11. {
  12.     struct ochered2* point;
  13.    
  14.     struct sequenceVnesh* link;
  15. };
  16.  
  17.  
  18.  
  19. int proverka( char p[100])
  20. {  int flag=1,i=0;
  21.     while(p[i]==' ')
  22.         i++;
  23.     for( i;(p[i]!='\0') && (flag==1);i++)
  24.     {
  25.         if(!isdigit(p[i]))
  26.             flag=0;
  27.     }
  28.     return flag;
  29. }
  30.  
  31. void listprint (struct ochered2 *down)
  32. {  struct ochered2 *d;
  33.     d=down;
  34.     if(d->z!=NULL && d!=NULL){
  35.         while(d->ptr!=NULL)
  36.         {
  37.             printf("%d ",d->z);
  38.             d=d->ptr;
  39.         }
  40.         printf("%d \n",d->z);}
  41.     else
  42.         printf("OCHERED PUSTAYA\n");
  43. }
  44.  
  45. struct ochered2 * clean(struct ochered2 *b)
  46. { struct ochered2 *v;
  47.     if(b!=NULL)
  48.         while(b->ptr!=NULL)
  49.         { v=b;
  50.             b=b->ptr;
  51.             free(v);
  52.             v=NULL;
  53.         }
  54.     free(b);
  55.     b=NULL;
  56.     return b;
  57. }
  58.  
  59. struct ochered2 * delet ( struct ochered2 * nach)
  60. {    struct ochered2 *del;
  61.     del=nach;
  62.     nach=nach->ptr;
  63.     free(del);
  64.     return nach;
  65. }
  66.  
  67.  
  68. struct ochered2 * vzat (struct ochered2 *nach)
  69. {   int znach=nach->z;
  70.     nach=delet(nach);
  71.     printf("\nVZATIE ELEMENTI: %d\n",znach);
  72.     return nach;
  73. }
  74.  
  75. void change(ochered2 *F)
  76. {  char p[100];
  77.     int flag =0;
  78.     while(!flag)
  79.     {printf("\nVVEDITE NOVOE CHISLO:\n");
  80.         scanf("%s",p);
  81.         if(proverka(p))
  82.         { F->z=atoi(p);
  83.             flag=1;
  84.         }
  85.         else
  86.             printf("\n!!NEKORREKTNIY VVOD!!\n");
  87.     }
  88.    
  89. }
  90.  
  91. struct ochered2 * add( ochered2 *konec)
  92. {    struct ochered2 *noviy;
  93.     noviy=(struct ochered2*)malloc(sizeof(struct ochered2));
  94.     if(noviy==NULL)
  95.     {
  96.         printf("\nERR:PAMYAT NE VIDELELAS\n");
  97.         exit ;
  98.     }
  99.     change(noviy);
  100.     noviy->ptr=NULL;
  101.     konec->ptr=noviy;
  102.     return noviy;
  103. }
  104.  
  105. int pustota(struct ochered2 *nach)
  106. { int flag=0;
  107.     if(nach==NULL ||(nach->ptr==NULL && nach->z==NULL ))
  108.         flag=1;
  109.     return flag;
  110. }
  111.  
  112. struct ochered2 * Konec( struct ochered2 * nach)
  113. {
  114.     struct ochered2 * konec;
  115.     konec=nach;
  116.     if(konec!=NULL)
  117.         while( konec->ptr!=NULL)
  118.             konec=konec->ptr;
  119.     return konec;
  120. }
  121.  
  122. struct sequenceVnesh * Menu2( struct sequenceVnesh * b)
  123. {  char p[10];
  124.     struct ochered2 *konec=Konec(b->point);
  125.     int pint=0,flag=0;
  126.     while (pint!=11)
  127.     { printf("\nMENU VNUTRENNEY OCHEREDI\n");
  128.         printf("[1]-NACHNITE RABOTY S OCHEREDIYU\n");
  129.         printf("[2]-SDELATI OCHERED PYSTOI\n");
  130.         printf("[3]-PROVERKA NA PUSTOTY OCHEREDIU\n");
  131.         printf("[4]-POKAZAT ZNACHENIE ELEMENTA V NACHALE OCHEREDI(POKAZAT NACHALO OCHEREDI)\n");
  132.         printf("[5]-UDALITI NACHALO OCHEREDI\n");
  133.         printf("[6]-VZYAT ELEMENT IZ NACHALA OCHEREDI\n");
  134.         printf("[7]-IZMENITI ZNACHENIE ELEMENTA V NACHALE OCHEREDI\n");
  135.         printf("[8]-DOBAVIT ELEMENT V KONEC OCHEREDI\n");
  136.         printf("[9]-RASPECHATATI STRYKTYRY DANNICH\n");
  137.         printf("[10]-ZAKONCHITE RABOTU S VNUTRENNEY OCHEREDYU\n");
  138.         printf("[11]-PEREITI K VNESNEY POSLEDOVATELNOSTI\n");
  139.         printf("VVEDITE PUNKT:\n");
  140.         scanf("%s",p);
  141.         if(proverka(p))
  142.         {    pint=atoi(p);
  143.             if((pint<=11)&&(pint>=1))
  144.             {   if(pint==1)
  145.             {flag=1;
  146.                 if(b->point==NULL)
  147.                 {  b->point=(struct ochered2*)malloc(sizeof(struct ochered2));
  148.                     if(b->point==NULL)
  149.                     {
  150.                         printf("\nERR:PAMYAT NE VIDELELAS\n");
  151.                         exit;
  152.                     }
  153.                     b->point->z=NULL;
  154.                     b->point->ptr=NULL;
  155.                     konec=b->point;
  156.                 }
  157.                
  158.             }
  159.                 if(flag==1)
  160.                 { if(pint<9 && pint> 1 && !pustota(b->point))
  161.                 { printf("\nVNUTRENYAYA OCHERED DO: ");
  162.                     listprint(b->point);
  163.                 }
  164.                 else
  165.                     if(pint==8)
  166.                         printf("\nVNUTRENYAYA OCHERED BILA PYSTA\n");
  167.                     switch(pint)
  168.                     { case 2:
  169.                         {  if(pustota(b->point))
  170.                             printf("\nOCHERED PUSTAYA NAZMITE 8\n");
  171.                         else
  172.                         { b->point=clean(b->point);
  173.                             printf("\nOCHERED OCHISHENA\n"); }
  174.                             break; }
  175.                         case 3:
  176.                         {  if(pustota(b->point))
  177.                             printf("\nOCHERED PUSTAYA\n");
  178.                         else
  179.                             printf("\nOCHERED NE PUSTAYA NAZMITE 8\n");
  180.                             break;}
  181.                         case 4:
  182.                         { if(pustota(b->point))
  183.                             printf("\nOchered pustaya nazmite 8\n");
  184.                         else
  185.                             printf("\n%d\n",b->point->z);
  186.                             break;}
  187.                         case 5:
  188.                         {  if(pustota(b->point))
  189.                             printf("\nOCHERED PUSTAYA NAZMITE 8\n");
  190.                         else
  191.                             b->point=delet(b->point);
  192.                             break; }
  193.                         case 6:
  194.                         {  if(pustota(b->point))
  195.                             printf("\nOCHERED PUSTAYA NAZMITE 8\n");
  196.                         else
  197.                             b->point=vzat(b->point);
  198.                             break; }
  199.                         case 7:
  200.                         {  if(pustota(b->point))
  201.                             printf("\nOCHERED PUSTAYA NAZMITE 8\n");
  202.                         else
  203.                             change(b->point);
  204.                             break; }
  205.                         case 8:
  206.                         {  if(pustota(b->point))
  207.                             change(b->point);
  208.                         else
  209.                             konec=add(konec);
  210.                             break; }
  211.                         case 9:
  212.                         {  if(pustota(b->point))
  213.                             printf("\nOCHERED PUSTAYA NAZMITE 8\n");
  214.                         else
  215.                             listprint(b->point);
  216.                             break; }
  217.                         case 10:
  218.                         { flag=0;
  219.                             break;
  220.                         }
  221.                         case 11:
  222.                         { printf("\n!!ZAKONCHITE RABOTY S OCHEREDIY!!\n");
  223.                             pint--;
  224.                             break; }
  225.                     }
  226.                     if(pint <9 && pint>1 && !pustota(b->point))
  227.                     { printf("\nVNUTRENYAYA OCHERED POSLE: ");
  228.                         listprint(b->point);
  229.                     }
  230.                 }
  231.                 else
  232.                     if(pint!=11)
  233.                         printf("\n!!NACHNITE RABOTY S OCHEREDIY!!\n");
  234.             }
  235.             else
  236.                 printf("\n!!NEKORREKTNIY VVOD!!\n");
  237.         }
  238.         else
  239.             printf("\n!!NEKORREKTNIY VVOD!!\n");
  240.     }
  241.     return (b);
  242. }
  243.  
  244.  
  245. void changeValue(struct sequenceVnesh** temp)
  246. {
  247.     if(*temp == NULL)
  248.     {
  249.         printf("DOBAVTE NOVIU ELEMENT VSE ELEMENTI PROCHITANI\n\n");
  250.     }
  251.     else{
  252.         *temp=Menu2((*temp));
  253.     }
  254. }
  255.  
  256. void pointerToBegin(struct sequenceVnesh** head, struct sequenceVnesh** temp)
  257. {
  258.     *temp = *head;
  259. }
  260.  
  261. void skipElem(struct sequenceVnesh** temp)
  262. {
  263.    
  264.     if(*temp == NULL )
  265.     {
  266.         printf("VSE ELEMENTI PROCHITANI\n\n");
  267.     }
  268.     else *temp = (*temp) -> link;
  269. }
  270.  
  271. void showValue( struct sequenceVnesh** temp)
  272. {
  273.     struct sequenceVnesh* temp1 = *temp;
  274.     if(temp1 == NULL) printf("VSE ELEMENTI PROCHITANI\n\n\n");
  275.     else  {
  276.         listprint((*temp)->point);
  277.     }
  278.    
  279. }
  280.  
  281. void  beginWork(int* flag)
  282. {
  283.     *flag =  1;
  284. }
  285.  
  286. void over()
  287. {
  288.     exit(1);
  289. }
  290.  
  291. void makeEmpty(struct sequenceVnesh** head)
  292. {
  293.     struct sequenceVnesh* temp1 = *head;
  294.     struct sequenceVnesh* temp2;
  295.     while( temp1 != NULL)
  296.     {
  297.         temp2 = temp1 -> link;
  298.         free(temp1);
  299.         temp1 = temp2;
  300.     }
  301.     *head = NULL;
  302. }
  303.  
  304.  
  305.  
  306. void addToEnd(struct sequenceVnesh** head, struct sequenceVnesh** temp1){
  307.    
  308.    
  309.     struct sequenceVnesh *temp;
  310.     temp = (struct sequenceVnesh *) malloc(sizeof(struct sequenceVnesh));
  311.     temp->point=NULL;
  312.    
  313.     temp=Menu2((temp));
  314.    
  315.     temp->link = NULL;
  316.    
  317.     if (*head == NULL)
  318.     {
  319.         *head = temp;
  320.     }
  321.     else
  322.     {
  323.         struct sequenceVnesh *p;
  324.        
  325.         p = *head;
  326.        
  327.         while (p->link != NULL)
  328.         {
  329.             p = p->link;
  330.         }
  331.        
  332.         p->link = temp;
  333.     }
  334.     if(*temp1 == NULL) *temp1 = *head;
  335. }
  336.  
  337. void print(struct sequenceVnesh** head, struct sequenceVnesh** temp)
  338. {
  339.     struct sequenceVnesh* p;
  340.     p = *head;
  341.     int i=1;
  342.     printf("\n");
  343.     while(p!=NULL)
  344.     {   printf("%d: ",i);
  345.         if(p->point!=NULL){
  346.             if(p == *temp)
  347.             {printf("\n-----------------------------------------------------\n");
  348.                 listprint(p->point);
  349.                 printf("-----------------------------------------------------\n");
  350.             }
  351.             else    listprint(p->point); }
  352.         else
  353.         {    if(p == *temp)
  354.         {printf("\n-----------------------------------------------------\n");
  355.             printf("POSLEDOVATELNOSTI PUSTAYA\n" );
  356.             printf("-----------------------------------------------------\n");
  357.         }
  358.         else
  359.             printf("POSLEDOVATELNOSTI PUSTAYA\n" ); }
  360.         p = p -> link;
  361.         i++;
  362.        
  363.     }
  364.     if(*temp==NULL) printf("VSE PROCHITANO\n");
  365.    
  366. }
  367.  
  368.  
  369.  
  370. void isEmpty(struct sequenceVnesh** head)
  371. {
  372.     if(*head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA\n");
  373.     else printf("POSLEDOVATELNOSTI NE PUSTAYA\n");
  374. }
  375.  
  376. void check( struct sequenceVnesh**head, struct sequenceVnesh** temp)
  377. {
  378.    
  379.     if((*temp) == NULL)
  380.         printf("VSE ELEMENTI PROCHITANI\n\n");
  381.     else{ printf("EST NEPROCHITANNIE ELEMENTI\n\n");
  382.         struct  sequenceVnesh* p = *head;
  383.         while(p != *temp)
  384.         {
  385.             p = p -> link;
  386.         }
  387.         while(p != NULL)
  388.         {
  389.             listprint(p->point);
  390.             printf("\n");
  391.             p = p -> link;
  392.         }
  393.     }
  394.    
  395.    
  396. }
  397.  
  398. void readElem(struct sequenceVnesh** temp, struct sequenceVnesh** head)
  399. {
  400.    
  401.    
  402.    
  403.     if ((*temp) == NULL) {
  404.         printf("VSE ELEMENTI PROCHITANI\n\n");
  405.     } else {
  406.         printf("PROCHITATI ELEMENT ");
  407.         listprint( (*temp)->point);
  408.         *temp = (*temp)->link;
  409.        
  410.     }
  411. }
  412.  
  413. int main()
  414. {
  415.     char value[10];
  416.     int flag = 0, pint;
  417.    
  418.     struct sequenceVnesh* head = NULL;
  419.     struct sequenceVnesh* temp = head;
  420.    
  421.     while(1)
  422.     {
  423.         printf("\nMENU VNESHNEY POSLEDOVATELNOTI\n");
  424.         printf("[1]-NACNITE RABOTY.\n");
  425.         printf("[2]-Sdelati VNESHNIYA  POSLEDOVATELNOSTI pystoi.\n");
  426.         printf("[3]-PYSTA LI VNESHNIYA  POSLEDOVATELNOSTI?\n");
  427.         printf("[4]-PPOKAZATI ZNACHENIE OCHEREDNOGO ELEMENTA\n");
  428.         printf("[5]-PROPYSTITE OCHEREDNOI ELEMENT\n");
  429.         printf("[6]-PROCHITAITE OCHEREDNOI ELEMENT POSLEDOVATELNOSTI \n");
  430.         printf("[7]-IZMENITE ZNACHENIE OCHEREDNOGO ELEMENTA\n");
  431.         printf("[8]-DOBAVITI ELEMENT V KONEC\n");
  432.         printf("[9]-Ykazatel OCHEREDNOGO ELEMENT v nachalo\n");
  433.         printf("[10]-Proveriti - ESTI ILI NET NEPROCHITANNIE ELEMENTI\n");
  434.         printf("[11]-Pacpechatati VNESHNIYA  POSLEDOVATELNOSTI \n");
  435.         printf("[12]-Konec raboty\n\n");
  436.         printf("VIBIRITI PUNKT:\n");
  437.         scanf("%s",value);
  438.         if (proverka(value)){
  439.             pint=atoi(value);
  440.             if((pint<=11)&&(pint>=1)){
  441.                 switch (pint)
  442.                 {
  443.                     case 1: beginWork(&flag);
  444.                         break;
  445.                    
  446.                     case 2: if(flag == 1)
  447.                     {   if(head == NULL) printf("\nPOSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  448.                     else
  449.                         makeEmpty(&head);
  450.                         break;
  451.                     } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  452.                        
  453.                     case 3: if(flag == 1)
  454.                     {
  455.                         isEmpty(&head);
  456.                         break;
  457.                     } else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  458.                
  459.                     case 4: if(flag == 1)
  460.                     {  if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  461.                     else
  462.                     {   showValue(&temp);
  463.                         print(&head, &temp);}
  464.                     break;
  465.                     } else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  466.                
  467.                     case 5: if(flag == 1)
  468.                     {   if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  469.                     else
  470.                     {  skipElem(&temp);
  471.                     print(&head, &temp);}
  472.                     break;
  473.                     } else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  474.                
  475.                     case 6:  if(flag == 1)
  476.                     {   if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  477.                     else
  478.                     { readElem(&temp,&head);
  479.                         print(&head, &temp);}
  480.                         break;
  481.                     }
  482.                     else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  483.                     case 7: if(flag == 1)
  484.                     {   if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n\n");
  485.                     else
  486.                     {   changeValue(&temp);
  487.                         print(&head, &temp);   }
  488.                         break;
  489.                     } else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  490.                
  491.                     case 8: if(flag == 1)
  492.                     {
  493.                         addToEnd(&head, &temp);
  494.                         print(&head, &temp);
  495.                         break;
  496.                     }   else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  497.                     case 9: if(flag == 1)
  498.                     {   if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  499.                     else
  500.                     {  pointerToBegin(&head, &temp);
  501.                         print(&head, &temp);  }
  502.                         break;
  503.                     }else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  504.                     case 10: {if(flag == 1)
  505.                     {   if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  506.                     else
  507.                 {  check(&head, &temp);
  508.                     printf("\n");
  509.                     if(head == NULL) break;
  510.                     else
  511.                     {
  512.                         print(&head, &temp);
  513.                     }   }
  514.                     }else  {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n");}
  515.                         break;}
  516.                
  517.                     case 11: if(flag == 1)
  518.                     {  if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
  519.                     else
  520.                         print(&head, &temp);
  521.                         break;
  522.                     } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  523.                    
  524.                     case 12: if(flag == 1) over();
  525.                     else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
  526.                 }
  527.             }
  528.             else
  529.                 printf("\n!!NEKORREKTNIY VVOD!!\n");
  530.         }
  531.         else
  532.             printf("\n!!NEKORREKTNIY VVOD!!\n");
  533.     }
  534. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement