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 <string.h>
- typedef struct Node
- {
- int data;
- struct Node *next_ptr;
- } Node;
- typedef struct List {
- size_t size;
- Node *head;
- Node *tail;
- } List;
- List *init()
- {
- List *newList = (List*)malloc(sizeof(List));
- newList->size = 0;
- newList->head = NULL;
- newList->tail = NULL;
- return newList;
- }
- void push_front(List *list, int _data)
- {
- Node *temp = (Node*)malloc(sizeof(Node));
- temp->data = _data;
- temp->next_ptr = list->head;
- if (list->head == NULL)
- list->tail = temp;
- list->head = temp;
- list->size++;
- }
- void print_data(List *list)
- {
- for (Node *temp = list->head; temp != NULL; temp = temp->next_ptr)
- printf("%d ", temp->data);
- }
- int pop(List *list, Node *del)
- {
- Node *temp = del->next_ptr;
- if (temp == NULL)
- {
- }
- del->next_ptr = temp->next_ptr;
- int res = temp->data;
- free(temp);
- list->size--;
- return res;
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- List *list = init();
- int data = 0;
- int num = 0;
- scanf("%d", &num);
- for (; scanf("%d", &data) == 1;)
- {
- push_front(list, data);
- }
- for (Node *i = list->head, *prev = i; i->next_ptr != NULL; )
- {
- if (i->next_ptr->data == num && i != list->head)
- {
- Node *temp = i->next_ptr;
- pop(list, prev);
- i = temp;
- continue;
- }
- if (i->next_ptr->data == num && i == list->head)
- {
- Node *temp = list->head;
- list->head = temp->next_ptr;
- free(temp);
- i = list->head;
- prev = i;
- continue;
- }
- if (i != list->head)
- prev = prev->next_ptr;
- i = i->next_ptr;
- }
- print_data(list);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement