Форум программистов, компьютерный форум CyberForum.ru

двусвязный список - функция удаления - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ переделать под использаовние указателей http://www.cyberforum.ru/cpp-beginners/thread143283.html
Здравствуйте, дамы и господа! Задача программы тривиальна и хрестоматийна: Дана матрица a(m,n) из 0 и 1. Найти в ней квадратную подматрицу из одних единиц максимального размера Решил ее следующим путем: #include <iostream> #include <time.h> #include <conio.h> using namespace std; const int inf=100; int mx;
C++ Динамический Массив Попалось вот такое задание на подготовке к экзамену,к сожалению не смог понять как работать с динамическим массивом. Добавить в массив строку,удалить столбец,распечатать,но все это надо сделать через динамический массив. Прошу помощи,заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread143277.html
C++ Нахождение и подсчет глассных
Прошу помощи:задание звучит так.Скопировать из файла 1 в файл 2 строки,которые задаються пользователем,подсчитать количество гласных в этих строчках. Вот написал программу но она считает только гласные в последней строчке и выводит 1 строчку,т.е например вводим с 1 по 4 она 4 раза выведет первую строчку.Очень надеюсь на помощь,заранее спасибо #include "stdafx.h" #include <iostream>...
C++ Правильное освобождение памяти
Здрасти. Двумерный динам. массив: int** matr=new int*; for (int i=0; i<rows; ++i) matr=new int; память правильно так освобождать?: for (int i=0; i<rows; ++i) delete matr;
C++ Поиск разности между максимальным и минимальным значениями массива http://www.cyberforum.ru/cpp-beginners/thread143226.html
Поросил друг,желательно на С++... Дан массив A из 10 значений. Найти разность между максимальным и минимальным значениями массива. Ввод массива и поиск максимального и минимального элементов оформить в виде перегруженной функции.
C++ Указатели и динамические структуры данных Задание 1. Дан указатель P1 на вершину стека (если стек пуст, то P1 = nil). Из- влечь из стека все элементы и вывести их значения. Вывести также коли- чество извлеченных элементов N (для пустого стека вывести 0). После из- влечения элементов из стека освобождать память, которую они занимали. Задание 2 Дано число D и указатели P1 и P2 на начало и конец очереди (если ... подробнее

Показать сообщение отдельно
m9c1k
31 / 6 / 1
Регистрация: 07.06.2010
Сообщений: 75
10.06.2010, 18:44  [ТС]     двусвязный список - функция удаления
Подскажите как надо

Добавлено через 2 минуты
При if(cur->auter == s) тоже неработает

Добавлено через 1 час 46 минут
Поменял на if (strcmp((cur->auter),s)==0) ,но всеравно не работает
Подскажите,где ошибка

Добавлено через 1 час 13 минут
Подправил функцию.Теперь,если автор находиться в середине или в конце списка ,то он удаляеться,а если в начале,то прога виснет. Подскажите ,почему?

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
void DeleteBook(List& theList) // функция удаления заданной позиции
{
    char s[20];
    Book* cur = theList.itsFirst;
    
    Book *temp;
    printf( " Enter the auter for deleted Book: \n");
    scanf("%s",&s);
    while (cur != NULL)
          {
               if (strcmp((cur -> auter),s)==0) 
               {
                   if (cur==theList.itsFirst) //если удаляем первый элемент
                   {            
                       theList.itsFirst = cur->itsNext; //первым будет второй элемент в списке
                       theList.itsFirst->itsPrev = NULL;
                        free(cur);  //высвободили память
                        cur = theList.itsFirst; //перевели указатель на второй элемент
                    }
                   else 
                   {
                       if (cur==theList.itsLast)//если элемент не первый
                       {
                        theList.itsLast = cur->itsPrev;
                        theList.itsLast->itsNext = NULL;                     
            
                        free(cur);  //высвободили память
                        cur = theList.itsLast;
                       }
                        else
                         {              
                            cur->itsNext->itsPrev = cur->itsPrev;   //с предыдущего элемета указали на последующий
                            cur->itsPrev->itsNext = cur->itsNext;
                            temp=cur;                               
                            cur= cur->itsNext; 
                            free(temp);
            //  
                          }
                    } 
                    }
                    else  cur = cur->itsNext;   
                }
           }
Добавлено через 8 часов 59 минут
Up...

Добавлено через 3 часа 7 минут
Не могу найти ошибку(

Добавлено через 8 часов 42 минуты
очень нужна ваша помощь
 
Текущее время: 02:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru