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

Надо удалить n-ный элемент списка, при том, что он не первый и не последний - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать массив http://www.cyberforum.ru/cpp-beginners/thread303715.html
Помогите написать массив объектов класса стринг, отсортировать, вывести. Благодарю заранее.
C++ из delphi на c++ вот написал программу для курсового проекта... можно ли как то перевести код на c++? http://www.cyberforum.ru/cpp-beginners/thread303709.html
C++ Список
У меня задание, в упорядоченном списке удалить ВСЕ нулевые заданные элементы,в моём случае нули... но у меня удаляет только 1 ноль из списка, помогите найти проблему #include <iostream.h> struct node { int num; node *next; };
C++ Поток в обратном порядке записать
#include "stdafx.h" #include "iostream" #include "stdio.h" #include <conio.h> #include "fstream" #include <string> #include <windows.h> using namespace std;
C++ Естественное слияние из n файлов http://www.cyberforum.ru/cpp-beginners/thread303663.html
Программа должна отсортировать текстовый файл, используя при этом дополнительные 2n файлов, путем естественного слияния. Всегда сам все задачи делал, но сейчас уже в полном ступоре. Буду рад любой помощи. Если у кого есть уже готовый код - вообще расцелую;) В общих чертах я в алгоритме вроде разобрался, сейчас уперся в одну проблему. Создал 2 массива указателей f1 и f2, в которых должны...
C++ При запуске .exe-файла окно очень быстро пропадает создал программу в Turbo C 2.0 она работает, но при запуске .exe-файла окно очень быстро пропадает...подскажите почему?? подробнее

Показать сообщение отдельно
lasbat
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 18
24.05.2011, 18:55     Надо удалить n-ный элемент списка, при том, что он не первый и не последний
классы можно использовать? или нужно сюда добавить функцию?

Добавлено через 2 часа 31 минуту
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
121
122
123
124
125
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
using namespace std;
 
template <class Item>
class list
{
    struct elem {
        Item inf;       
        elem *next;
        elem (Item x):inf(x),next(0)
        {}
    };
    elem *head; //указатель на начало
    int size;  //размер списка – количество элементов
    elem *find(int index) //возвращает указатель на элемент с номером index
            {
                  if ((index<1)||(index>size))
                        return NULL;
                  else
                  {
                        elem *cur=head;
                        for (int i=1;i<index;i++)
                             cur=cur->next;
                        return cur;
                  }
            }
 
public:
    //конструктор класса
    list():head(0),size(0){}
    //деструктор класса
    ~list()
    {while (!empty())
    remove(1);
    }
 
    //проверка пустоты списка
    bool empty()
    {return head==0;}
 
    //возвращает размер списка, т.е. количество элементов
    int getlength()
    {return size;}
 
    //возвращает значение элемента по его номеру
    Item get(int index)
    {
 
        elem *r=find(index);   
        Item i=r->inf;   
        return i;  
 
    }
 
    //осуществляет вставку элемента со значением data в позицию index
    void insert(int index, Item data)
    {
        int newLength=getlength()+1;
 
        elem *newPtr=new elem(data);
        size=newLength;
        if (index==1)
        {
            newPtr->next=head;
            head=newPtr;
        }
        else
        {
            elem *prev=find(index-1);
            newPtr->next=prev->next;
            prev->next=newPtr;
        }
    }
 
 
//осуществляет удаление элемента в позиции index
void remove(int index)
{
    elem *cur;
    --size;
    if (index==1)
    {
        cur=head;
        head=head->next;
    }
    else
    {
        elem *prev=find(index-1);
        cur=prev->next;
        prev->next=cur->next;
    }
    cur->next=NULL;
    delete cur;
}
 
};
 
int main() {
    ifstream in("input.txt");
 
    string tmp;
    list <string> l1;
    
    int n=0;// how many words
    while (in.peek()!=EOF) 
    {
        n++;
        in>>tmp;
        l1.insert(n,tmp);
        
    }
    cout<<"before deleting: ";
    for(int i=1;i<=l1.getlength();i++)
        cout<<l1.get(i)<<" ";
    cout<<endl;
    l1.remove(2);
    cout<<"after deleting: ";
    for(int i=1;i<=l1.getlength();i++)
        cout<<l1.get(i)<<" ";
    cout<<endl;
    system("PAUSE");
}
вобщем вот класс односвязного списка, тут есть функция удаления, попробуй под свою задачу переделать
 
Текущее время: 13:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru