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

Удаление элемента из однонаправленного списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти среднее арифметическое модулей кратных пяти элементов массива, расположенных после максимального элемента http://www.cyberforum.ru/cpp-beginners/thread755419.html
помогите написать программу а то у меня выходит бред #include <iostream.h> #include <iomanip.h> #include <math.h> #include <conio.h> void maxim (int a,int,int*,int*); int main() { int a,n,i,max,imax; cout<<"VVedite razmer massiv";
C++ Подсчет строк и очистка экрана С++ Добрый НОЧИ Возник вопрос после заполнения всего экрана (свободных строк осталось меньше пяти) – экран очищается и программа продолжает работать в верхней строке экрана. #include <iostream> main() { int str = 1; http://www.cyberforum.ru/cpp-beginners/thread755415.html
непонятная ошибка в легком коде C++
#include <iostream> #include <stdio.h> using namespace std; double power(double n, int p) { for (int i = 0; i = p; i++) {
C++ Прерывание программы по ESC C++
доброй ночи Добрался до такой вот темы Пытаюсь реализовать перехват нажатия клавиши ESC и SPACE в консольном режиме Но программа не реагирует на нажатие клавиши и продолжает упорно работать Подскажите пожалуйста функцию для остановки программы по ESC #include <iostream> const int ESC = 27;
C++ В зависимости от введенных данных вывести на экран: http://www.cyberforum.ru/cpp-beginners/thread755376.html
/* Программа должна работать до тех пор пока пользаватель не виидет слово exit причом не вашно большим или маленьким регистром принять от пользавателя имя(провиряем на букви имя) принять от пользавателя фамилию(проверить на букви) принять от пользавателя возраст(проверить на цифри функиция isNumeric()) если возвраст до 18 лет ми должни напечатать имя,фамилия,вы ребенок если возвраст от 10...
C++ Реализовать запись и чтение списка в бинарный файл у меня есть задача в котором двусвязный список из указателей на элементы моего класса. Надо реализовать запись и чтение в бинарный файл мой класс class Fraction { private: int *rational; void GetMixedView(); // метод преобразования дроби в смешанный вид void Cancellation(); // метод сокращения дроби void GetIntPart(); // метод выделения целой части дроби подробнее

Показать сообщение отдельно
Fiks19
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 44

Удаление элемента из однонаправленного списка - C++

08.01.2013, 10:00. Просмотров 1175. Ответов 4
Метки (Все метки)

Не могу разобраться с выводом на экран и удалением все делаю по аналогии с различной литературой но ни чего не выходит или просто недопонимаю немного. Помогите советом.

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
struct list
{
  int name;
  //char name[10];
  list* next;
};
 
list* init_list(int n){
    list *beg;//указатель на первый элемент
    list *p,*r;//вспомогательные указатели
    beg=new(list);//выделяем память под первый элемент
        cout<<"\n?";
        cin>>beg->name;//вводим значение информационного поля
        beg->next=0;//обнуляем адресное поле
        p=beg;//определили конец списка путем присвоению указателю p занчение 0(указатель beg)
    for (int i = 0; i < n-1; i++) {
 
        r=new(list);//создаем новый элемент
        cout<<"\n?";
        cin>>r->name;
        r->next=0;
        p->next=r;//связываем p и r
        p=r;//ставим на r указатель p (последний элемент)
        }
return beg;//возвращаем beg как результат функции
}
 
list* del_list(list* beg,int k){
//удаление элемента с номером k из списка
 
list *p=beg;
    if(k==0)//удаление первого элемента
    {
        beg=beg->next;
        delete p;
        return beg;
    }
        //проходим по списку до элемента с номером k-1
    for(int i=1;i<k && p->next!=0;i++)
        p=p->next;
        /*если такого элемента в списке нет, то возвращаем указатель на
        начало списка в качестве результата функции*/
            if (p->next==0) return beg;
            list* r=p->next;//ставим указатель r на k-й элемент
            p->next=r->next;//связываем k-1 и k+1 элемент
            delete r;//удаляем k-й элемент из памяти
            return beg;
}
 
void print_list(list* beg)
//печать списка
{
    list* p=beg;//начало списка
    int i=0;
        while(p!=0)
        {   i++;
            cout<<p->name<<"\t";
            p=p->next;//переход к следующему элементу
        }
}
 
int main ()
 
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
    init_list(2);
    
    print_list(0);
    del_list(0,3);
 
 
 
cout << "\n";
system("pause");
}
Добавлено через 19 минут
Функции работают проблема теперь как вывести эти функции.
Ввод работает вывод и удаление нет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru