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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lostmen
0 / 0 / 0
Регистрация: 15.03.2011
Сообщений: 13
#1

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

08.04.2011, 14:21. Просмотров 365. Ответов 0
Метки нет (Все метки)

Люди помогите пожалуйста исправить код а то при вводе списка из 1 элемента который и нужно удалить выводиться ошибка
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
126
127
128
129
130
131
132
133
#include <iostream>
using namespace std;
 struct stack
  {
    int info;
    stack *rlink, *llink;
  };
 
int F(stack *k, int t)
{
    if(k->info == t)
        return 1;
}
/*Функция вывода слева напpаво*/
 
int lstack(stack *left)
{
  stack *k = left;
  if (k != NULL)
  {
    while (k != NULL)
    {
        cout<<k->info<<" ";                         
        k = k->rlink;
    }
  }
}
 
/*Функция вывода спpава налево*/
 
void rstack(stack *rigth)
{
    stack *k = rigth;
    if (k != NULL)
    {
        while (k != NULL)
        {
            cout<<k->info<<" ";                              
            k = k->llink;
        }
    }
}
 
void main()
{
  setlocale(LC_ALL, "Russian_Russia.1251");
  stack *top, *q, *k, *left, *rigth;
  int w,t;
  cout<<"Введите x:";                                  
  cin>>t;                                                     
  top = NULL;
 
  cout<<"Введите элемент списка:";                                
  cin>>w;                                                    
  k = new stack; 
  k->info = w; 
  k->rlink = NULL;
  k->llink = NULL;
  rigth = k;
  q = k; 
 
  cout<<"Введите следующий элемент списка:";                      
  cin>>w;                                                           
  while (!feof(stdin))
  {
    k = new stack;
    k->info = w;
    k->rlink = q;
 
    /*Связь нового узла с предыдущим*/
 
    q->llink = k; /*Связываем предыдущий узел с вновь созданным*/
    q = k;
    cout<<"Введите следующий элемент списка:";                           
    cin>>w;                                                               
  }
 
  /* Вывод стека */
  q->llink = NULL;
  left = q;
  cout<<"\nSleva napravo:\n";                                              
  lstack(left);
  cout<<"\nSpravo nalevo:\n";                                                  
  rstack(rigth);
  /* Удаление узлов стека*/
 
  stack *l;  /*Указатель на предыдущий узел*/
  l = k = left;
 
  while (k != NULL)
  {
    if (F(k,t)== 1)
    { 
      if (k == left)
      { /*Если самый левый*/
        q = k;
        left = k->rlink;
        left->llink = NULL;
        l = k = left;
        delete q;
      }
      else if (k == rigth)
      { /* Если самый правый*/
        q = k;
        rigth = k->llink;
        rigth->rlink = NULL;
        k = NULL;
        delete q;
      }
      else
      { /*если в середине*/
        q = k;
        l->rlink = k->rlink;
        k->rlink->llink = l;
        delete q;
        k = l->rlink;
      }
    }
    else
    {
      l = k;
      k = k->rlink;
    }
  }
  cout<<"\n_______________________\n";                      
  cout<<"\n~{ POSLE UDALENIYA "<<t<<" }~\n";                           
  cout<<"\nSleva napravo:\n";                                 
  lstack(left);
  cout<<"\nSprava nalevo;\n";
  rstack(rigth);
  cout<<"\n\007";                                             
  system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 14:21     Двусвязный список
Посмотрите здесь:

C++ Двусвязный линейный список
C++ Двусвязный в односвязный список
исправить двусвязный список? C++
C++ Линейный двусвязный список
C++ двусвязный циклический список
C++ Линейный двусвязный список
Циклический двусвязный список C++
Кольцевой двусвязный список C++
Линейный Двусвязный список! C++
Двусвязный список с файла C++
Двусвязный кольцевой список C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru