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

односвязный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ указатели http://www.cyberforum.ru/cpp-beginners/thread291498.html
Добрый вечер Есть некоторый массив указателей char *mas и указатель char *pointer = new char В pointer время от времени что-то пишется и перезатирается. Хотелось бы присвоить mas, где COUNTER...
C++ считать текст из файла в файле есть большой текст, мне нужно считать десять предложений, вывести их на экран, обработать, за тем считать еще десять предложений, вывести обработать и так далее, пока не конец файла как это... http://www.cyberforum.ru/cpp-beginners/thread291483.html
Разбить строку в массив через разделитель C++
Здравствуйте уважаемые форумчане. Мне как новичку интересно как выполнить следующее. Необходимо разбить содержимое строки через разделитель, которым будет к примеру запятая в отдельный индекс массива...
C++ Подпрограммы-процедуры
помогите найти ошибку #include <iostream> #include <math.h> #include <conio.h> void proc(double b, int i){ double a; a = pow(cos(b*i+1),2)/cos(b*i*i-1); }
C++ Инициализация статического массива http://www.cyberforum.ru/cpp-beginners/thread291457.html
Добрый вечер! Допустим, что имеется класс class A { .... public: static int array; .... }; Как инициализировать массив в stdafx.h, если в нём будет 700 элементов, вводимых не вручную?
C++ Функция, возвращающая текущую дату никак толком не могу разобратса с библиотекой time.h можите сказать точную функцию которая возвратит текущую дату и какие аргументы она принемает , и не в формате строки... а то что то у меня не... подробнее

Показать сообщение отдельно
Olga_LED
0 / 0 / 0
Регистрация: 04.05.2011
Сообщений: 9
09.05.2011, 02:20  [ТС]
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
//Elem.h
#include<ostream>
class Elem
{
protected:
    Elem *next; // Указатель на следующий элемент
    char* data;// Содержит данные типа символов
public:
         //констукторы
    Elem(): data(), next(NULL) {}
    Elem(char* dataValue): 
        data(dataValue), next(NULL){} 
        //перегруз <<
    friend std::ostream& operator<<(std::ostream& s, Elem & el)
    {
        s<<el.data;
        return s;// Возвращаем значение поля данных данного элемента
    }
    char* getData();// Метод -  получить для данного элемента
    void setData(char* value);// Метод - задать значение для данного элемента
    char* getAData()
    {
        char* dt = data;
        return dt;
    }
 
    Elem* getNext();
    void setNext(Elem *el);
 
 
};
//Elem.cpp
#include "Elem.h"
 
char* Elem::getData()
{
    return data;
}
void Elem::setData(char* value)
{
    data=value;
}
 
 
 
Elem* Elem::getNext()
{
return next;
}
 
void Elem::setNext(Elem *el)
{
    next=el;
}
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
//IntList.h
#include "Elem.h"
 
class IntList
{
protected:
    Elem *beg;
    int count;
public:
    //конструкторы
    IntList(): count(0), beg(NULL) {}
    Elem* Add(char* Value);// Добавление элемента в список
 
    void Delete(int index);// Удаление элемента из списка
    ~IntList();// Деструктор
    Elem* getBeg();// Получить начальный элемент списка
    int getCount();// Получить номер
 
    // Перегрузка оператора <<  
    friend std::ostream& operator<<(std::ostream& s, IntList& iList)
    {
        Elem *el;
        el=iList.getBeg();
        for (int i=0; i<iList.getCount(); i++)
        {
            s<<"Воок: "<<el->getData()<<" " ;
            el=el->getNext();
        }
        return s;
    }
 
    // Перегрузка оператора [] для того, чтобы можно было обращаться к элементу через индекс
    char* operator[](int index)
    {
        Elem *el;
        el = beg;
        for (int i=0;i<count; i++)
        {
            if (index == i)  
                break;
            el = el->getNext();
        }
        return el->getAData();
    }
};
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
//IntList.cpp
#include "IntList.h"
 
Elem* IntList::Add(char* Value) // Добавление элемента в список
{
    Elem *new_el, *el;
    if (count==0) // Если добавляемый элемент 0
    {
        beg=new Elem(Value);// Значению beg присваиваем значение Value
        new_el=beg;
    }
    else
    {
        new_el=new Elem(Value);
        el=beg;
        for (int i=0; i<count; i++)
        {
            if (i==count-1)//Если находимся на предыдущем элемента
            {
                el->setNext(new_el);// Добавляем в конец
                break;
            }
            el=el->getNext();
        }
    }
    count++; // Увеличиваем значение количества списка на 1
    return new_el;
}
 
void IntList::Delete(int index)// Удаление элемента из списка
                               // входное значение по номеру - index
{
    Elem *el, *del_el;
    if ((count==0) || (index >=count))// Если количество элементов равно нулю или больше чем количество элементов,
        return;                          // то ничего не делаем
    if ((index==0))// Если индекс указывает на начальное значение,то значит это beg
    {
        el=beg;
        if (beg->getNext()!=NULL)
            beg=beg->getNext();//beg сдвигаем на одну позицию вперед и данный элемент удаляем
        delete el;
        count--;  // уменьшаем количество элементов на 1
        return;
    }
    el=beg;// указатель на начало списка
    for (int i=0; i<count; i++)                       
    {
        if ((i==(index-1)) && (index==count-1)) // Если находимся в цикле на предыдущем значении index и index является предыдущим значением
        {                                        //удаляемый элемент - следующий за данным
            del_el=el->getNext();
            el->setNext(NULL);
            delete del_el;// удаляем элемент
            count--;
            return;
        }
        if (i==(index-1))// Если находимся в цикле на предыдущем значении для индекса
        {
            del_el=el->getNext();// удаляемый элемент - следующий за данным
            el->setNext(del_el->getNext());
            delete del_el;// удаляем элемент
            count--;
            return;
        }
        el=el->getNext(); // указатель теперь на следующий элемент
    }
}
 
IntList::~IntList()
{
    for (int i=0, cnt=count; i<cnt; i++)
        Delete(0);
}
 
Elem* IntList::getBeg()
{
    return beg;
}
int IntList::getCount()
{
    return count;
}
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
//List.cpp
#include <iostream>
#include "IntList.h"
int main(int argc, char* argv[])
{
    setlocale(0,"");
    IntList il;
        il.Add("Жуков");
        il.Add("Кейси,Паниш");
        il.Add("Епифанов");
    std::cout<<il;
    il.Add("Смитт");
    std::cout<<std::endl;
    std::cout<<il;
    il.Delete(1);
    std::cout<<std::endl;
    std::cout<<il;
    
    return 0;
    
 
    system("PAUSE");
    
 
}
Добавлено через 7 минут
Цитата Сообщение от I_like_C++ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Class List
{
private:
      string name_author;//имя автора
      int year;//год издания
      
      *List next;//указатель на следующий э-т
public:
      /*
      конструкторы, деструкторы
      объявление и реализация методов класса
      */
};
вот так должен выглядеть у тебя класс=/ можешь добавлять туда не только год добавить=)
это понятно..или я уже туплю просто ночью.. а,начало доходить)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru