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

Перегрузка оператора индексации для связанного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Эмуляция ввода с клавиатуры SendKeys.Send(); http://www.cyberforum.ru/cpp-beginners/thread754852.html
Нужна эмуляция ввода с клавиатуры. Что нужно поключить для использования метода Send(); ? И как его правильно использовать?
C++ Задача звучит так: Пользователь вводит строку символов, удалить из этой строки каждый 3-й по счёту элемент Если кто поможет, буду очень благодарен: Пользователь вводит строку символов, удалить из этой строки каждый 3-й по счёту элемент. http://www.cyberforum.ru/cpp-beginners/thread754825.html
C++ Описать структуру данных о студентах
Помогите пожалуйста описать структуру студент содержащую поля: фамилия, оценки по 4 предметам, размер стипендии. выбрать студентов имеющих худшую успеваемость из получивших стипендию. результат...
Динамическое выделение памяти для объекта класса C++
Скажите в чем отличие между A *ptr=new A() и A *ptr=new A;
C++ Встроенные функции http://www.cyberforum.ru/cpp-beginners/thread754795.html
нужны простейшие программы с применением встроенных функций delline и floor
C++ Вычислить значения функции y=a^x+a^b Здравсвуйте. Помогите, пожалуйста, исправить программу, вроде всё пишу правильно, но что-то она не хочет работать. Условие: Вычислить заначения функции y=a^x+a^b, где x и b сумма элементов x и b... подробнее

Показать сообщение отдельно
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
07.01.2013, 22:17
Вот пример как можно удалять конкретный элемент из списка, функция delet, удаляет третий элемент.
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(); 
    
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru