Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<ctype.h>
- struct ochered2
- { int z;
- ochered2 *ptr;
- };
- struct sequenceVnesh
- {
- struct ochered2* point;
- struct sequenceVnesh* link;
- };
- int proverka( char p[100])
- { int flag=1,i=0;
- while(p[i]==' ')
- i++;
- for( i;(p[i]!='\0') && (flag==1);i++)
- {
- if(!isdigit(p[i]))
- flag=0;
- }
- return flag;
- }
- void listprint (struct ochered2 *down)
- { struct ochered2 *d;
- d=down;
- if(d->z!=NULL && d!=NULL){
- while(d->ptr!=NULL)
- {
- printf("%d ",d->z);
- d=d->ptr;
- }
- printf("%d \n",d->z);}
- else
- printf("OCHERED PUSTAYA\n");
- }
- struct ochered2 * clean(struct ochered2 *b)
- { struct ochered2 *v;
- if(b!=NULL)
- while(b->ptr!=NULL)
- { v=b;
- b=b->ptr;
- free(v);
- v=NULL;
- }
- free(b);
- b=NULL;
- return b;
- }
- struct ochered2 * delet ( struct ochered2 * nach)
- { struct ochered2 *del;
- del=nach;
- nach=nach->ptr;
- free(del);
- return nach;
- }
- struct ochered2 * vzat (struct ochered2 *nach)
- { int znach=nach->z;
- nach=delet(nach);
- printf("\nVZATIE ELEMENTI: %d\n",znach);
- return nach;
- }
- void change(ochered2 *F)
- { char p[100];
- int flag =0;
- while(!flag)
- {printf("\nVVEDITE NOVOE CHISLO:\n");
- scanf("%s",p);
- if(proverka(p))
- { F->z=atoi(p);
- flag=1;
- }
- else
- printf("\n!!NEKORREKTNIY VVOD!!\n");
- }
- }
- struct ochered2 * add( ochered2 *konec)
- { struct ochered2 *noviy;
- noviy=(struct ochered2*)malloc(sizeof(struct ochered2));
- if(noviy==NULL)
- {
- printf("\nERR:PAMYAT NE VIDELELAS\n");
- exit ;
- }
- change(noviy);
- noviy->ptr=NULL;
- konec->ptr=noviy;
- return noviy;
- }
- int pustota(struct ochered2 *nach)
- { int flag=0;
- if(nach==NULL ||(nach->ptr==NULL && nach->z==NULL ))
- flag=1;
- return flag;
- }
- struct ochered2 * Konec( struct ochered2 * nach)
- {
- struct ochered2 * konec;
- konec=nach;
- if(konec!=NULL)
- while( konec->ptr!=NULL)
- konec=konec->ptr;
- return konec;
- }
- struct sequenceVnesh * Menu2( struct sequenceVnesh * b)
- { char p[10];
- struct ochered2 *konec=Konec(b->point);
- int pint=0,flag=0;
- while (pint!=11)
- { printf("\nMENU VNUTRENNEY OCHEREDI\n");
- printf("[1]-NACHNITE RABOTY S OCHEREDIYU\n");
- printf("[2]-SDELATI OCHERED PYSTOI\n");
- printf("[3]-PROVERKA NA PUSTOTY OCHEREDIU\n");
- printf("[4]-POKAZAT ZNACHENIE ELEMENTA V NACHALE OCHEREDI(POKAZAT NACHALO OCHEREDI)\n");
- printf("[5]-UDALITI NACHALO OCHEREDI\n");
- printf("[6]-VZYAT ELEMENT IZ NACHALA OCHEREDI\n");
- printf("[7]-IZMENITI ZNACHENIE ELEMENTA V NACHALE OCHEREDI\n");
- printf("[8]-DOBAVIT ELEMENT V KONEC OCHEREDI\n");
- printf("[9]-RASPECHATATI STRYKTYRY DANNICH\n");
- printf("[10]-ZAKONCHITE RABOTU S VNUTRENNEY OCHEREDYU\n");
- printf("[11]-PEREITI K VNESNEY POSLEDOVATELNOSTI\n");
- printf("VVEDITE PUNKT:\n");
- scanf("%s",p);
- if(proverka(p))
- { pint=atoi(p);
- if((pint<=11)&&(pint>=1))
- { if(pint==1)
- {flag=1;
- if(b->point==NULL)
- { b->point=(struct ochered2*)malloc(sizeof(struct ochered2));
- if(b->point==NULL)
- {
- printf("\nERR:PAMYAT NE VIDELELAS\n");
- exit;
- }
- b->point->z=NULL;
- b->point->ptr=NULL;
- konec=b->point;
- }
- }
- if(flag==1)
- { if(pint<9 && pint> 1 && !pustota(b->point))
- { printf("\nVNUTRENYAYA OCHERED DO: ");
- listprint(b->point);
- }
- else
- if(pint==8)
- printf("\nVNUTRENYAYA OCHERED BILA PYSTA\n");
- switch(pint)
- { case 2:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA NAZMITE 8\n");
- else
- { b->point=clean(b->point);
- printf("\nOCHERED OCHISHENA\n"); }
- break; }
- case 3:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA\n");
- else
- printf("\nOCHERED NE PUSTAYA NAZMITE 8\n");
- break;}
- case 4:
- { if(pustota(b->point))
- printf("\nOchered pustaya nazmite 8\n");
- else
- printf("\n%d\n",b->point->z);
- break;}
- case 5:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA NAZMITE 8\n");
- else
- b->point=delet(b->point);
- break; }
- case 6:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA NAZMITE 8\n");
- else
- b->point=vzat(b->point);
- break; }
- case 7:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA NAZMITE 8\n");
- else
- change(b->point);
- break; }
- case 8:
- { if(pustota(b->point))
- change(b->point);
- else
- konec=add(konec);
- break; }
- case 9:
- { if(pustota(b->point))
- printf("\nOCHERED PUSTAYA NAZMITE 8\n");
- else
- listprint(b->point);
- break; }
- case 10:
- { flag=0;
- break;
- }
- case 11:
- { printf("\n!!ZAKONCHITE RABOTY S OCHEREDIY!!\n");
- pint--;
- break; }
- }
- if(pint <9 && pint>1 && !pustota(b->point))
- { printf("\nVNUTRENYAYA OCHERED POSLE: ");
- listprint(b->point);
- }
- }
- else
- if(pint!=11)
- printf("\n!!NACHNITE RABOTY S OCHEREDIY!!\n");
- }
- else
- printf("\n!!NEKORREKTNIY VVOD!!\n");
- }
- else
- printf("\n!!NEKORREKTNIY VVOD!!\n");
- }
- return (b);
- }
- void changeValue(struct sequenceVnesh** temp)
- {
- if(*temp == NULL)
- {
- printf("DOBAVTE NOVIU ELEMENT VSE ELEMENTI PROCHITANI\n\n");
- }
- else{
- *temp=Menu2((*temp));
- }
- }
- void pointerToBegin(struct sequenceVnesh** head, struct sequenceVnesh** temp)
- {
- *temp = *head;
- }
- void skipElem(struct sequenceVnesh** temp)
- {
- if(*temp == NULL )
- {
- printf("VSE ELEMENTI PROCHITANI\n\n");
- }
- else *temp = (*temp) -> link;
- }
- void showValue( struct sequenceVnesh** temp)
- {
- struct sequenceVnesh* temp1 = *temp;
- if(temp1 == NULL) printf("VSE ELEMENTI PROCHITANI\n\n\n");
- else {
- listprint((*temp)->point);
- }
- }
- void beginWork(int* flag)
- {
- *flag = 1;
- }
- void over()
- {
- exit(1);
- }
- void makeEmpty(struct sequenceVnesh** head)
- {
- struct sequenceVnesh* temp1 = *head;
- struct sequenceVnesh* temp2;
- while( temp1 != NULL)
- {
- temp2 = temp1 -> link;
- free(temp1);
- temp1 = temp2;
- }
- *head = NULL;
- }
- void addToEnd(struct sequenceVnesh** head, struct sequenceVnesh** temp1){
- struct sequenceVnesh *temp;
- temp = (struct sequenceVnesh *) malloc(sizeof(struct sequenceVnesh));
- temp->point=NULL;
- temp=Menu2((temp));
- temp->link = NULL;
- if (*head == NULL)
- {
- *head = temp;
- }
- else
- {
- struct sequenceVnesh *p;
- p = *head;
- while (p->link != NULL)
- {
- p = p->link;
- }
- p->link = temp;
- }
- if(*temp1 == NULL) *temp1 = *head;
- }
- void print(struct sequenceVnesh** head, struct sequenceVnesh** temp)
- {
- struct sequenceVnesh* p;
- p = *head;
- int i=1;
- printf("\n");
- while(p!=NULL)
- { printf("%d: ",i);
- if(p->point!=NULL){
- if(p == *temp)
- {printf("\n-----------------------------------------------------\n");
- listprint(p->point);
- printf("-----------------------------------------------------\n");
- }
- else listprint(p->point); }
- else
- { if(p == *temp)
- {printf("\n-----------------------------------------------------\n");
- printf("POSLEDOVATELNOSTI PUSTAYA\n" );
- printf("-----------------------------------------------------\n");
- }
- else
- printf("POSLEDOVATELNOSTI PUSTAYA\n" ); }
- p = p -> link;
- i++;
- }
- if(*temp==NULL) printf("VSE PROCHITANO\n");
- }
- void isEmpty(struct sequenceVnesh** head)
- {
- if(*head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA\n");
- else printf("POSLEDOVATELNOSTI NE PUSTAYA\n");
- }
- void check( struct sequenceVnesh**head, struct sequenceVnesh** temp)
- {
- if((*temp) == NULL)
- printf("VSE ELEMENTI PROCHITANI\n\n");
- else{ printf("EST NEPROCHITANNIE ELEMENTI\n\n");
- struct sequenceVnesh* p = *head;
- while(p != *temp)
- {
- p = p -> link;
- }
- while(p != NULL)
- {
- listprint(p->point);
- printf("\n");
- p = p -> link;
- }
- }
- }
- void readElem(struct sequenceVnesh** temp, struct sequenceVnesh** head)
- {
- if ((*temp) == NULL) {
- printf("VSE ELEMENTI PROCHITANI\n\n");
- } else {
- printf("PROCHITATI ELEMENT ");
- listprint( (*temp)->point);
- *temp = (*temp)->link;
- }
- }
- int main()
- {
- char value[10];
- int flag = 0, pint;
- struct sequenceVnesh* head = NULL;
- struct sequenceVnesh* temp = head;
- while(1)
- {
- printf("\nMENU VNESHNEY POSLEDOVATELNOTI\n");
- printf("[1]-NACNITE RABOTY.\n");
- printf("[2]-Sdelati VNESHNIYA POSLEDOVATELNOSTI pystoi.\n");
- printf("[3]-PYSTA LI VNESHNIYA POSLEDOVATELNOSTI?\n");
- printf("[4]-PPOKAZATI ZNACHENIE OCHEREDNOGO ELEMENTA\n");
- printf("[5]-PROPYSTITE OCHEREDNOI ELEMENT\n");
- printf("[6]-PROCHITAITE OCHEREDNOI ELEMENT POSLEDOVATELNOSTI \n");
- printf("[7]-IZMENITE ZNACHENIE OCHEREDNOGO ELEMENTA\n");
- printf("[8]-DOBAVITI ELEMENT V KONEC\n");
- printf("[9]-Ykazatel OCHEREDNOGO ELEMENT v nachalo\n");
- printf("[10]-Proveriti - ESTI ILI NET NEPROCHITANNIE ELEMENTI\n");
- printf("[11]-Pacpechatati VNESHNIYA POSLEDOVATELNOSTI \n");
- printf("[12]-Konec raboty\n\n");
- printf("VIBIRITI PUNKT:\n");
- scanf("%s",value);
- if (proverka(value)){
- pint=atoi(value);
- if((pint<=11)&&(pint>=1)){
- switch (pint)
- {
- case 1: beginWork(&flag);
- break;
- case 2: if(flag == 1)
- { if(head == NULL) printf("\nPOSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- makeEmpty(&head);
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 3: if(flag == 1)
- {
- isEmpty(&head);
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 4: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- { showValue(&temp);
- print(&head, &temp);}
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 5: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- { skipElem(&temp);
- print(&head, &temp);}
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 6: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- { readElem(&temp,&head);
- print(&head, &temp);}
- break;
- }
- else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 7: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n\n");
- else
- { changeValue(&temp);
- print(&head, &temp); }
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 8: if(flag == 1)
- {
- addToEnd(&head, &temp);
- print(&head, &temp);
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 9: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- { pointerToBegin(&head, &temp);
- print(&head, &temp); }
- break;
- }else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 10: {if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- { check(&head, &temp);
- printf("\n");
- if(head == NULL) break;
- else
- {
- print(&head, &temp);
- } }
- }else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n");}
- break;}
- case 11: if(flag == 1)
- { if(head == NULL) printf("POSLEDOVATELNOSTI PUSTAYA NACHMITE 8\n");
- else
- print(&head, &temp);
- break;
- } else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- case 12: if(flag == 1) over();
- else {printf("\n!!NACHNITE RABOTY C POSLEDOVATELNOSTIYU!!\n"); break;}
- }
- }
- else
- printf("\n!!NEKORREKTNIY VVOD!!\n");
- }
- else
- printf("\n!!NEKORREKTNIY VVOD!!\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement