Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- struct element {
- int info;
- struct element *next;
- };
- struct element *addToTop(struct element *p0, int v1);
- void addToBottom(struct element *p1, int v1);
- struct element* deleteOcc();
- void viewList(struct element *p2);
- int main()
- {
- int v=1;
- struct element *p;
- p=malloc(sizeof(struct element));
- p->next=NULL;
- bool once = true;
- while(v!=0)
- {
- scanf("%d", &v);
- if(once == true && v>0)
- {
- p->info = v;
- once = false;
- continue;
- }
- if(v>0 && v%2==0)
- p=addToTop(p,v);
- else if(v>0 && v%2!=0)
- addToBottom(p,v);
- else if(v<0)
- p=deleteOcc(p,v);
- }
- viewList(p);
- return 0;
- }
- struct element *addToTop(struct element *p0, int v1)
- {
- struct element *punt;
- punt=malloc(sizeof(struct element));
- punt->info=v1;
- punt->next=p0;
- return punt;
- }
- void addToBottom(struct element *p1, int v1)
- {
- struct element *punta;
- punta=malloc(sizeof(struct element));
- punta->info=v1;
- while(p1!=NULL)
- {
- if(p1->next==NULL)
- {
- p1->next=punta;
- punta->next=NULL;
- break;
- }
- p1=p1->next;
- }
- }
- struct element* deleteOcc(struct element *p3, int v1)
- {
- struct element *pi;
- //viewList(p3);
- printf("valore p3 iniziale:%d\n",p3->info);
- if(p3->info==(-1)*v1)
- {
- pi = p3;
- printf("valore p3: %d\n",p3->info);
- p3=p3->next;
- printf("valore p3 after: %d\n",p3->info);
- free(pi);
- return p3;
- } else {
- while(p3->next!=NULL)
- {
- if(p3->next->info==v1 || p3->next->info==(-1)*v1)
- {
- pi=p3->next;
- p3->next=p3->next->next;
- free(pi);
- return p3;
- }
- p3=p3->next;
- }
- return p3;
- }
- }
- void viewList(struct element *p2)
- {
- while(p2!=NULL)
- {
- printf("%d\n", p2->info);
- p2=p2->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement