Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Katsu001
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 11
1

Добавление и удаление элементов в линейном списке

02.07.2017, 21:03. Просмотров 939. Ответов 1
Метки нет (Все метки)

В линейном списке удалить и добавить по отдельности элементы:
-первый
-второй
-последний
-предпоследний
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2017, 21:03
Ответы с готовыми решениями:

Поиск в линейном списке: программа зависает
Помогите исправить код пожалуйста. Программа правильно работает,но после вывода на экран нужного...

Найти максимальный элемент в однонаправленном линейном списке
здравствуйте! помогите помочь написать задача или киньте ссылку по её решению. Си...

Добавление и удаление элементов из стека
Не могу разобраться в теме, по сему прошу помощи. Нужна программа на C (если можно, с пояснениями...

В линейном списке целых чисел найти среднее арифметическое нечётных чисел, делящихся на 5
Требуется создать линейный список целых чисел, элементами которого являются случайные целые числа и...

Инициализация, добавление и удаление элементов в СТЕКЕ через связный список
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через...

1
Геомеханик
798 / 602 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
03.07.2017, 14:53 2
Лучший ответ Сообщение было отмечено Katsu001 как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h> 
#include <stdlib.h>
#include <malloc.h>
 
struct node {
        void* val;
        struct node* next;
        struct node* prev;
};
 
typedef struct {
        struct node* head, *tail;
} list_t;
 
void list_init(list_t* ls) { ls->head = ls->tail = NULL; }
void list_push_back(list_t* ls, void* val);
void list_pop_back(list_t* ls);
void list_pop_front(list_t* ls);
void list_clear(list_t* ls);
 
int main(void){
        int i;
        struct node* p;
        list_t ls;
        list_init(&ls);
        for(i = 1; i < 10; ++i)
                list_push_back(&ls, (void*)i);
 
        list_pop_front(&ls);
        list_pop_front(&ls);
        list_pop_back(&ls);
        list_pop_back(&ls);
 
        for(p = ls.head; p != NULL; p = p->next)
                printf("%d ", (int)p->val);
        putchar('\n');
 
        for(p = ls.tail; p != NULL; p = p->prev)
                printf("%d ", (int)p->val);
        list_clear(&ls);
    getchar();
    return 0;
}
 
//добавить в хвост списка
void list_push_back(list_t* ls, void* val){
        struct node* p = (struct node*)malloc(sizeof(struct node));
        if(p == NULL)
                return;
        p->prev = p->next = NULL;
        p->val  = val;
 
        if(ls->head == NULL)
                ls->head = ls->tail = p;
        else {
                p->prev = ls->tail;
                ls->tail->next = p;
                ls->tail = p;
        }
}
 
//удалить с хвоста списка
void list_pop_back(list_t* ls){
        struct node* t;
        if(ls->tail != NULL){
                t = ls->tail;
                ls->tail = ls->tail->prev;
                free(t);
                if(ls->tail != NULL)
                        ls->tail->next = NULL;
                else
                        ls->head = NULL;
        }
}
 
//удалить с головы списка
void list_pop_front(list_t* ls){
        struct node* t;
        if(ls->head != NULL){
                t = ls->head;
                ls->head = ls->head->next;
                free(t);
                if(ls->head != NULL)
                        ls->head->prev = NULL;
                else
                        ls->tail = NULL;
        }
}
 
//удалить всё
void list_clear(list_t* ls){
        while(ls->head != NULL)
                list_pop_front(ls);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2017, 14:53

Вывод элементов множества, добавление элементов множества, удаление элементов множества
Надо на завтра сделать задачку на си, а я ни бум-бум, не выходит ничего. надо реализовать такие...

Удаление в линейном списке
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Удаление узла в линейном списке
У меня есть структура (файловая система) , я могу помещать туда файлы (здесь все работает)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru