Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/43: Рейтинг темы: голосов - 43, средняя оценка - 4.81
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200

Удаление последнего элемента из односвязного списка

19.09.2012, 02:17. Показов 9423. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый вечер. помогите, пжлста, разобраться, пытаюсь удалить последний элемент в списке, по принципу первого, но похоже какую то ерунду пишу.
p.s. подкиньте идею как оптимизировать код, чтобы удаление всех элементов производить так сказать в одной части кода, а не в отдельных. спасибо.
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
void Delete(LIST *first, int index)
{
        list_elem *elem, Left, Right,prev;/создаем указатель на элемент структуры
        int i = 0;/номер элемента
        if((index<0)||(index>=first->NULL)) 
return;     /возращаем ноль, если индекс не меньше 0 и не больше последнего элемента
 
        if (index==0){ /если индекс равен 0
                elem=first->head->next;//сохраняем указатель на второй элемент, чтоб не потерять
                free(first->head);         //удаляем первый элемент
                first->head=elem;        //начало списка теперь указывает на бывший второй элемент
                return;
        }
if (index==NULL) {
 
elem=first->head->next->prev;//sohranjaem ukazatelj na predposlednij              element   
free (prev->NULL);  //udaljaem poslednij element
 
 prev->NULL=elem;       //konec spiska teperj ukazivaet na bivwij predposlednij element
return;
 }
        for(Left= first->head; i != index-1; elem = elem->next) i++;/здесь происходит проверка , сравниваем элементы
        elem = Left->next;//элем передвигается на 1
        Right=elem->next//правый через элемент занимает след. позицию
        free(elem); //удаляем элемент
        Left->next =Right;//передвигаем весь список
first->NULL--;сохраненяем правильный размер
        return;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2012, 02:17
Ответы с готовыми решениями:

Удаление элемента из односвязного списка
Почему не работает функция удаления идентификатора? Как ее можно переделать? #include&quot;stdafx.h&quot; #include...

Удаление элемента из односвязного списка
помогите, пжлста, уже мучаюсь несколько дней, нужна незамысловатая функция,которая удаляет заданный элемент из односвязного списка ...

Удаление элемента из односвязного списка
Есть односвязный список из 50 целых случайных неуникальных чисел, допустим от 1 до 1000 вида: typedef struct st { int item; ...

22
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.09.2012, 12:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Psilon Посмотреть сообщение
как выделяется динамическая память в С?
у системы запрашивается большой блок памяти, который потом представляется в виде связного списка свободных блоков
при запросе какого-то объема находится свободный блок подходящего размера, от него отрезается нужный кусок, а оставшаяся часть снова добавляется в список свободных блоков
а при освобождении соседние свободные блоки склеиваются в один, а несоседние просто добавляются в список свободных блоков
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.09.2012, 13:18
accept, да не, как работает монитор кучи я и так знаю, мне интересны были именно языковые средства (почему-то я не видел выделения памяти ни в одном коде на С, что видел).
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
19.09.2012, 13:28
языковые средства - это malloc(), calloc(), realloc() и free()
сообщение выше про них

а new и delete - это операторы языка C++
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2012, 13:28

Удаление текущего элемента из односвязного списка
Доброго времени суток. Возникла такая проблема. В интернете везде удаление элемента из односвязного списка (не обязательно первого или...

Удаление всех элементов односвязного списка
есть односвязный список из struct el{ int val; struct el* next; }; причем у последнего элемента next=NULL; ...

Удаление узла из односвязного списка. + Сортировка
Уважаемые, форумчане! Помогите разобраться с работой функции void DeleteNodeByIndex(NODE *head,int k). Задача такова: задать список,...

Удаление последнего элемента односвязного списка
как сделать в списке pop_back и полное очищение? struct Node { int value; Node* next; }; struct List { Node...

Поправить функцию удаления последнего элемента односвязного списка
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; struct elem { int data; elem...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru