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

Связанные списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти индекс первого элемента, превосходяшего среднее арифметическое всех элементов матрицы http://www.cyberforum.ru/cpp-beginners/thread606266.html
Взаданой матрице Δ(N,N) найти индекс первого элемента превосходяшего среднее арифметическое всех элементов матрици. Элементы матриц просматривать слева на право и сверху вниз .
C++ Написать программу, которая считывает текст из файла и записывает в другой файл Написать программу, которая считывает текст из файла и записывает в другой файл все слова, встречающиеся в тексте несколько раз. http://www.cyberforum.ru/cpp-beginners/thread606229.html
C++ Структура: вывести на экран информацию о результатах прыжков в длину, отсортированную в порядке возрастания мест
В одном файле хранятся сведения об участниках соревнований: номер участника, ФИО, страна, во 2 файле сведения об итогах соревнований: номер участника, вид соревнований, дата, место. вывести на экран информацию о результатах прыжков в длину (номер участника, ФИО, страна, место), отсортированную в порядке возрастания мест.
C++ Программа, считывающая текст из файла
Написать программу, которая считывает текст из файла и записывает в другой файл встречающиеся в тексте числа, из отрезка и находит их среднее арифметическое.
C++ Написать программу, которая считывает текст из файла http://www.cyberforum.ru/cpp-beginners/thread606206.html
Задание. Написать программу, которая считывает текст из файла и записывает в другой файл количество букв в тексте. Помогите сделать пожайлуйста. В дискуссию войти не смогу, увы.
C++ Странная запись: 1L Здравствуйте! Только что наткнулся на запись var = 1L << 1. Все понятно кроме одного: зачем добавлять L после 1? подробнее

Показать сообщение отдельно
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
15.06.2012, 15:18     Связанные списки
Вот тебе возьми за основу связный список, ничего не хватает добавишь сам
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
#include <iostream> 
using namespace std;
 
typedef int newtp;
struct node 
{ 
    newtp data; //  данные 
    node* next; // указатель на следующий
    node* pred; // указатель на предыдущий
}; 
 
class linklist // класс связный список
{ 
private: 
    node* first; // указатель на начало
public: 
    linklist() { first = NULL; } // в конструкторе инициализируем его, он указывает в 
                                 // в место где нет полезной информации
 
    void push( newtp d, int pos); // метод добавления элемента
    int pop( int pos);  // метод удаления элемента
    void clean(); // удаление всех элементов
    void view(); // вывод на экран
}; 
 
void linklist::push( newtp d, int pos) // метод добавления элемента
{ 
 
    node* newnode = new node; // создаём новый элемент
    newnode->data = d; // вводим в него данные
    if(first == NULL)   // если это первый элемент в списке                                   
    { 
        newnode->next = newnode; 
        newnode->pred = newnode; 
        first = newnode; // first  указывает на него
    } 
    else 
    {
        node* temp = first; // создаём времменный указатель
        for ( int i = pos; i > 1; i--,temp=temp->next); // цикл
            temp->pred->next = newnode; 
            newnode->pred = temp->pred; 
            newnode->next = temp; // добавляем перед времменным
            temp->pred = newnode;  
    }
}  
 
int linklist::pop( int pos) // удаляем элемент из списка по индексу
{ 
  if(first == NULL)  return 0; // если список пуст
  int val;  
  if(first == first ->next) // если это последний элемент в списке
  { 
      val = first->data; 
      delete first; 
      first = NULL; 
  } 
  else  
 { 
      node* temp = first; 
      for ( int i = pos; i > 1; i--, temp = temp->next); 
          if( temp == first) first = temp->next; 
              temp->pred->next = temp->next; // удаляем temp элемент
              temp->next->pred = temp->pred; 
              val = temp->data; 
              delete temp;   
  } 
  return val; 
} 
 
void linklist::clean() // удалить все элементы из списка
{  
    if(first == NULL) return ; 
    for ( node* newnode = first->next; newnode!=first; newnode = newnode->next) delete newnode; 
    delete first; 
    first = NULL; 
}
 
void linklist::view() // просмотр элементов в списке
{  
    if(first == NULL) return ; 
    node* newnode = first; 
    do 
    { 
        cout << newnode->data << endl; 
        newnode = newnode->next; 
    } while(newnode!=first); 
}
 
int main() 
{ 
    linklist li; 
    
    li.push(12,1); 
    li.push(13,2); 
    li.push(14,2); 
 
    li.view();
 
    
}
 
Текущее время: 23:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru