Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 16:25   #1
n_mitrofanow
 
Регистрация: 13.01.2011
Сообщений: 9
По умолчанию Двунаправленный список Си. Удаление элемента.

Привет всем!

Написал функцию для удаления элемента из списка. Список описывается следующей структурой:
PHP код:
struct lst{
    
int data;         
    
struct lst *prev;
    
struct lst *next;
};
typedef struct lst LIST;
///////////////////////////////// 
Собственно функция:
PHP код:
void Delete_Item_List(LIST* Headint Number)
{
    
int i;
    LIST* 
cur Head;
    
// продвигаемся к удаляемому элементу
       
for(0Number && cur != NULLi++)
          
cur cur->next;

    if(
cur != NULL// проверка на корректность
     
{
        if(
cur->prev == NULL)  // если первый элемент
          
{
                   
Head Head->next;

                
Head->prev NULL
                
free(cur);
           
// последний элемент
           
}else if(cur->next == NULL)   
              {
                  
                    
cur->prev->next NULL;
                    
free(cur); 
               }else 
                 {
                        
cur->next->prev cur->prev;
                        
cur->prev->next cur->next;
                        
free(cur);
                }
     }
     

Если нужно удалить первый элемент (Number = 0), то ошибка. С остальными справляется на ура. В чем проблема?

Заранее спасибо!
n_mitrofanow вне форума Ответить с цитированием
Старый 05.04.2012, 18:18   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Во-первых, можно попробовать заменить проверку (проверять cur==Head).
Во-вторых, если 2-го элемента в списке нет, то конструкция Head->prev=NULL будет неверной (обращение к несуществующему элементу).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 05.04.2012 в 19:07.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный список jennya Общие вопросы C/C++ 6 05.10.2010 01:23
Линейный однонаправленый список. Удаление элемента. 08ekhiv1 Помощь студентам 5 23.03.2010 10:07
Двунаправленный список на С++ JeyKip Помощь студентам 0 11.01.2010 23:04
Двунаправленный список F_A_N_Alex Помощь студентам 0 01.10.2009 00:35
Двунаправленный список Chudo4258 Помощь студентам 6 09.05.2009 07:16