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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Транспонирование одномерного массива http://www.cyberforum.ru/cpp-beginners/thread826773.html
int main() { setlocale(LC_ALL,".1251"); int mas ; int n = 0; cout <<"Введите размер массива"; cin >> n; cout << "Введите члены последовательности(через пробел):\n";
C++ сохранение в файл Всем привет. Люди добрые помогите пж сохранить введенный результат в файл. #include <iostream.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> FILE *fl; typedef struct http://www.cyberforum.ru/cpp-beginners/thread826763.html
перевод из Delphi в Builder C++
type Point = record color : TColor; x, y : Integer; end; type PointArray = array of array of Point; var pa: PointArray;
C++ Проблемы с загрузкой DLL
Здравствуйте! Скачал отсюда библиотеку: phash.org Создал консольный проект проект( в Visual C++ 2010 Express): #include "stdafx.h" #include <iostream> #include <windows.h>
C++ удаление и поиск в списке http://www.cyberforum.ru/cpp-beginners/thread826735.html
Подскажите, как реализовать функции удаления и поиска числа в списке? Нужно, что бы удаление происходило по индексу элемента, а поиск по всему списку и выводил индексы найденных чисел.
C++ присвоить заведомо не зная ох. Задача из ряда невыполнимых для мозга. Есть класс, например: class Class1 { Class1(string fileName) { //открываем файл и считаем строки int count; //в переменной кол-во строк /*и только теперь узнав колличество строк подробнее

Показать сообщение отдельно
1071
 Аватар для 1071
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 8
11.03.2014, 19:27     Удаление элемента из двусвязного списка
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
#include <conio.h>
#include <Windows.h>
#include <iostream>
 
using namespace std;
//Создать структуру с именем Sotrudnik с полями: 
//фамилия, имя, должность, год поступления на работу.
//Сформировать двусвязный список. Удалить из списка тех сотрудников,
//кто работает менее 3-х лет. Вывести измененный список.
int main()
{   //setlocale(LC_ALL,"Russian");
struct Sotrudnik
{
    char Famil[20];
    char Imya[20];
    char Dolznost[20];
    int god;
 
        Sotrudnik * next, * prev;
        
};
Sotrudnik *head=0;//адрес головы списка
Sotrudnik *tail=0;//адрес хвоста списка  
//head->prev=0;
Sotrudnik *current,*tmp, *tyear;// tyear-работающий меньше 3 лет.
    /*setlocale(LC_ALL,"Russian");
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);   */
char c;
int k;
cout<<"vvesti gaHHble? y/n";
 c=getche();     
 //формирование списка с клавиатуры
 while (c=='y' || c=='Y')  
 {                
if (head) //если не первый элемент списка
 { tail->next=new Sotrudnik;  /* создаем новый элемент и объяв-ляем его следующим для последнего элемента */
 
   tail->next->prev=tail; /* для вновь созданного элемента объявляем текущий последний элемент списка предыдущим */
   tail=tail->next;  /* созданный элемент списка объявляем по-следним */
  current=tail;
  }
else  //если создаем первый элемент списка
  { head=new Sotrudnik; /* созданный элемент объявляем головой списка */
    tail=head;   //он же пока и последний
    head->prev=0;  //у первого элемента нет предыдущего эле-мента
   current=head;
  }
               
 cout<<"\nvvedite gaHHble:\n";
  cout<<"famil:";
  cin>>current->Famil;  
  cout<<"imya:";
  cin>>current->Imya;
  cout<<"dolznost:";
  cin>>current->Dolznost;
  cout<<"god noctyplen:";
  cin>>current->god;
  current->next=0;
  cout<<"vvesti eLLLe gahhble? y/n \n";
  tail->next=0; /* у последнего элемента списка адрес не следующего элемента */
  c=getche();
 
 }
 
 
// current = head;
  current=current->next;
    while(current != 0)
    { 
        Sotrudnik *tmp = 0;
 
        if(2014 - (current -> god) < 3)
        {
            if(current == head)
            {
                tmp = head -> next;
                delete head;
                head = tmp;
                tmp -> prev = 0;
            }
            else if(current == tail)
            {
                tmp = tail -> prev;
                delete current;
                tail = tmp;
                tmp -> next = 0;
            }
            else
            {
                tmp = current -> prev;
                tmp -> next = current -> next;
                delete current;
            }
        }
    }        //удаление
 
current=head;
  while(current!=0)
  {
      cout<<"famil: \t";
     cout<<current->Famil<<"\n";
        cout<<"imya:\t";
     cout<<current->Imya<<"\n";
        cout<<"dolzhnostь: \t";
    cout<<current->Dolznost<<"\n";
      cout<<"god noctyplen: \t";
          cout<<current->god<<"\n";
    current=current->next;
    cout<<"\n";
  }
  
  
 
 system("pause");
  return 0;
}
 
Текущее время: 03:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru