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

Не работает удаление в списке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу, которая запрашивает у пользователя количество дней в текущем месяце и сегодняшнее число http://www.cyberforum.ru/cpp-beginners/thread743842.html
Составить программу, которая запрашивает у пользователя количество дней в текущем месяце и сегодняшнее число. Программа выводит сообщение о том,сколько дней осталось до конца текущего месяца. Пример...
C++ Алгоритм Кнута, Морриса и Пратта Я написал программу поиска образа в строке по методу Кнута, Морриса и Пратта.. И программа должна ввети чувствительности / нечувствительности к регистру. помогите пожалуйста как это сделать?? ... http://www.cyberforum.ru/cpp-beginners/thread743825.html
Вычислить суммы элементов массива до первого нуля (доработать) C++
1) В массиве i,j, =1,…,8 есть хотя бы один нуль. Вычислить суммы элементов массива до первого нуля. Исходные данные: 1,17,2,4,-5,0,7,8. Это задание, я в принципе разбираюсь в массивах (запись и...
C++ алгоритм для проверки условия. Палиндромы
рассмотрим некоторое натуральное число. Если это не палиндром, то изменим порядок его цифр на обратный и сложим исходное число с получившимся. Если сумма не палиндром, то над ней повторяется то же...
C++ Выбор среды программирования http://www.cyberforum.ru/cpp-beginners/thread743792.html
Доброго времени суток. Желаю учится С++,но нужно правильно выбрать среду.Есть два компа.Один на ХР х32 ,второй на Винде 7 х64.На экспишке стоит вот этот Microsoft Visual Studio 2008(первый в этом...
C++ Удалите из слове все буквы, совпадающие с последней буквой. 3.удалите из слове все буквы, совпадающие с последней буквой. подробнее

Показать сообщение отдельно
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
24.12.2012, 21:25
По удалению, можно сделать так
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
#include <iostream> 
 
struct node 
{  
    int data; 
    node* next; 
}; 
 
class linklist 
{ 
private: 
    node* first; 
public: 
    linklist() { first = NULL; } 
    void additem(int d); 
    void show(); 
    void delet(); // функция удаление конкретного элемента из списка
}; 
 
void linklist::additem(int d) 
{  
    node* newnode = new node; // создаём новый элемент списка
    newnode->data = d; // присваиваем полю data, значение переданное в как аргумент функции
    if(first == NULL) // если элемент первый в списки, то есть first равно NULL
    {
        newnode->next = first; // указателю на следующий элемент, присваиваем значение хранящиеся в указатели first
        first = newnode;       // присваиваем указателю first, значение на новый элемент списка
    }  
    else // ели элемент не первый в списке
    { 
        node* current = first; // создаём элемент текущей и присвоим ему firts, то есть начало списка 
        while(current->next!=NULL) // цикл идёт до тех пор пока указатель элемента не равен значению NULL, то есть до конца списка  
              current = current->next;// переходим от узла к узлу
        current->next = newnode; // когда мы достигли конца списка, элемент расположенный в конце, указывает на наш новый элемент
        newnode->next = NULL;    // новый элемент указывает, на NULL, то есть на конец списка
    } 
}
 
void linklist::show() 
{ 
    node* current = first; 
    while(current) 
    { 
        std::cout << current->data << " "; 
        current = current->next;
    }  
}  
 
void linklist::delet() // функция удаления конкретного элемента из списка
{   
    int n = 3;         // номер элемента, который удаляем
    int count = 1;     // счётчик элементов, начинаем с первого элемента
    node* current = first; // текущий элемент
    node* temp;             // временный элемент
 
    while(count!=n) // проходим циклом, пока не дойдём до элемента с искомым номером
    {   
        temp = current; // временному присваиваем текущий
        current = current->next; // переход на следующий узел
        count++;                 // увеличиваем счётчик
    }   
    temp->next = current->next; // временный ( то есть элемент, стоящий перед текущим, указывает на элемент идущий после текущего
    delete current; // удаляем текущий
}
 
int main() 
{ 
    linklist li; 
    li.additem(11); 
    li.additem(12); 
    li.additem(13); 
    li.additem(14); 
    li.additem(15); 
 
    li.show(); 
    std::cout << std::endl;
    li.delet(); 
    std::cout << std::endl;
    li.show(); 
    
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru