Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct list // создаём структуру
- {
- int field;
- struct list *next;
- struct list *prev;
- };
- struct list * init(int a) // функция инициализации списка
- {
- struct list *lst;
- lst = (struct list*)malloc(sizeof(struct list));
- lst->field = a;
- lst->next = NULL;
- lst->prev = NULL;
- return(lst);
- }
- struct list * addelem(list *lst, int number) // функция добавления элемента
- {
- struct list *temp, *p;
- temp = (struct list*)malloc(sizeof(list));
- p = lst->next;
- lst->next = temp;
- temp->field = number;
- temp->next = p;
- temp->prev = lst;
- if (p != NULL)
- p->prev = temp;
- return(temp);
- }
- void listprint(list *lst) // функция вывода списка
- {
- struct list *p;
- p = lst;
- do {
- printf("%d ", p->field);
- p = p->next;
- } while (p != NULL);
- }
- int main() {
- list *p1, *cur; // создаём указатель p1 и переменный указатель
- int num = 1;
- p1 = init(num); // инициализируем список
- cur = p1;
- for (int i = 2; i < 8; i++) { // создаём новые элементы (до 7)
- num = i;
- cur = addelem(cur, num);
- }
- listprint(p1); // выводим список
- printf("\n");
- cur = p1;
- cur = addelem(cur, cur->field);
- while(cur->next != NULL) { //делаем дублирование элементов с нечетными номерамаи
- cur=cur->next; //при этом вставляем копии перед оригиналами
- if(cur->field % 2 != 0) {
- cur = addelem(cur->prev, cur->field);
- cur=cur->next;
- }
- }
- listprint(p1); // выводим полученный список
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement