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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан текст. файл, сост. из одной или нескольких строк.подскажите,как написать программу http://www.cyberforum.ru/cpp-beginners/thread328322.html
Дан текст. файл, сост. из одной или нескольких строк. Каждая строка файла содержит числа, разделенные пробелами. Из каждой строки файла удалить числа, предшествующие первому положительному чуслу. Если в строке нет положительных чисел, оставить её без изменения
C++ динамический 2-х мерный массив помогите плиз вот код , нужно составить динамический 2-х мерный массив double **a int n,m,l; scanf("%d%d",&n,&m); a=(double **) colloc (m,sizeof(double*)); for (i=0;i<m;i++) a=(double *) colloc(n,sizeof (double)) http://www.cyberforum.ru/cpp-beginners/thread328314.html
C++ Благодаря опережающему объявлению класса можно создать только УКАЗАТЕЛЬ на этот класс; так ли это?
class B; class A{ A(); ~A(); B* b; //А вот так не компилится //B b_0; };
C++ Найти слово где наименьшее количество гласных
Здравствуйте уважаемые формучане, вот дали такое задание : 1. скопировать из файла в файл строки где больше двух слов 2. Определить номер слова в котором наименьшее количество гласных Первое я сделал без проблем: #include <iostream.h> #include <string.h> #include <conio.h> #include <stdio.h>
C++ Наследование классов http://www.cyberforum.ru/cpp-beginners/thread328265.html
Пусть автомобиль характеризуется установленным двигателем, трансмиссией и количеством мест для пассажиров. Двигатель определяется мощностью и видом топлива, трансмиссия - количеством ведущих осей и типом (механическая или автоматическая). Все выше перечисленное (в том числе автомобиль) являются разновидностями сборочной единицы, характеризуемой уникальным идентификатором. Определить необходимые...
C++ Создать файл Написать программу, которая создает файл, состоящий из N целых чисел, и вывести на экран только отрицательные элементы файла. подскажите функцию или что-нибудь? плиз. подробнее

Показать сообщение отдельно
Alex1205
6 / 6 / 1
Регистрация: 14.01.2011
Сообщений: 81

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

30.06.2011, 23:00. Просмотров 783. Ответов 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include<iostream>
using namespace std;
 
class Node
{
private:
    int data;
public:
    Node *next;
    Node(int x = 0)
    {
        data = x;
        next = NULL;
    }
    int get(){return data;}
};
class List
{
private:
    Node *first,*end;
public:
    List()
    {
        first = NULL;
        end = NULL;
    }
    void Display()
    {
        Node *tmp = first;
        if(tmp==NULL)return;
        do
        {
        cout<<tmp->get()<<" ";
        if(tmp==end)break;
        tmp = tmp->next;
        }while(true);
        cout<<"\n\n";
    }
    void AddToBegin(int value)
    {
        Node *n = new Node(value);//создание нового узла
        if(first == NULL)//проверка,есть ли что-то в списке
        {
            first = n;
            end = n;
        }
        else
        {
            n->next = first;//связывание нового с первыми
            first = n;
        }
    }
    void AddToEnd(int value)
    {
        Node *n = new Node(value);//создание нового узла
        if(first == NULL)//проверка,есть ли что-то в списке
        {
            first = n;
            end = n;
        }
        else
        {
            end->next = n;//связывание последнего с новым и переопределение последнего
            end = n;
        }
    }
    void DelFromBegin()//функция удаления из начала списка
    {
        if(first==NULL)return;
        if(first==end)
        {
            delete first;
            first = NULL;
            end = NULL;
        }
        else
        {
            Node *d = first;
            first = first->next;
            d->next=NULL;
            delete d;
        }
    }
    void DelFromEnd()//функция удаления из конца списка
    {
        if(first==NULL)return;
        if(first==end)
        {
            delete first;
            first = NULL;
            end = NULL;
        }
        else
        {
            Node *d = first;
            while(d->next!=end)
            {
                d = d->next;
            }
            delete end;
            end = d;
            end->next = NULL;
        }
    }
};
 
void main()
{
List L;
L.AddToEnd(6);
L.AddToEnd(16);
L.Display();
L.AddToBegin(5);
L.AddToBegin(15);
L.Display();
L.DelFromBegin();
L.Display();
L.DelFromEnd();
L.Display();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru