Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- // создаем свой тип данных для односвязного списка
- typedef struct List
- {
- int info;
- struct List* next;
- } List;
- // указатели на первый и последний элемент списка
- List [id58802|*First], *Last;
- // функция добавления нового элемента в конец списка
- void push(int inf)
- {
- struct List* el;
- // динамически выделяем память под очередной элемент списка
- el = (struct List*)malloc(sizeof(struct List));
- if (el == NULL)
- {
- printf("Не удалось выделить память под элемент списка.\n");
- return;
- }
- el->info = inf;
- el->next = NULL;
- if (First == NULL)
- First = Last = el;
- else
- {
- Last->next = el;
- Last = Last->next;
- }
- }
- void pop()
- {
- struct List *el1, *q, *p;
- int i = 0, flag = 0, flag2=0;
- if(First==NULL) return;
- if(First->next==NULL) return;
- el1=First;
- if ((First->info %2)== 0)
- {
- p=First->next;
- free ( First);
- First=p;
- flag=1;
- }
- for (el1 = First; el1->next != NULL; )
- {
- if ((el1->next->info % 2) == 0) // dell first % 2 element
- {
- p = el1;
- q=el1->next;
- p->next = el1->next->next;
- q->next=NULL;
- }
- else
- {
- if (((el1->next->info % 2) == 0) && (el1->next->next == NULL))
- {
- el1->next = NULL;
- return;
- }
- else
- el1=el1->next;
- }
- }
- return;
- }
- int main(void)
- {
- int inf , num , i = 0;
- List [id1449472|*el], *tmp;
- setlocale(LC_ALL, "Russian");
- First = Last = NULL;
- printf(" Введите элементы списка (окончание ввода — любой символ, кроме цифры):\n");
- while (scanf("%d", &inf) != 0)
- push(inf);
- pop();
- printf("\nВаш список: ");
- for (el = First; el != NULL; el = el->next)
- printf("%d ", el->info);
- printf("\n"); // освобождение выделенной под список памяти
- for (el = First; el != NULL;)
- {
- tmp = el;
- el = el->next;
- free(tmp);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement