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

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

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

Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю) - C++

22.04.2013, 10:56. Просмотров 930. Ответов 23
Метки нет (Все метки)

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
#include <iostream>
#include <conio.h> 
struct Node
{
    int memSize;
    Node *Next;
};
Node *BegList;
using namespace std;
void MakeList(int *Sz, int n)
{
    Node *Curr,*Prev;
    int i;
    BegList=new Node;
    BegList->Next =NULL;
    BegList->memSize=Sz[0];
    cout << Sz[0] << endl;
    Prev=BegList;
    for (i=1; i<n; i++)
    {
        Curr=new Node;
        Prev->Next =Curr;
        Curr->Next =NULL;
        Curr->memSize=Sz[i];
        cout << Sz[i] << endl;
        Prev=Curr;
    }
};
 
long searchBlock(long sz)
{
    Node *Curr, *Prev, *Nxt;
    long szBlock;
    Curr=BegList;
    Prev=NULL;
    while(1)
    {
        if (Curr == NULL) 
        {
            szBlock=-1;
            break;
        }
        if (Curr->memSize >= sz) // Нашли...
        {
           
                   Nxt=Curr->Next;
                   szBlock=Curr->memSize;
           
                  if (Curr == BegList) // Блок первый
           {
               if (Nxt == NULL) // и единственный
               {
                   delete BegList;
                   cout << "Now list is empty" << endl;
                   break;
               }
               else
               {
                   delete BegList;
                   BegList=Nxt;
                   break;
               }
 
           }
           else // блок не первый
           {
               if (Nxt == NULL)  // последний
               {
                   delete Curr;
                   Prev->Next=NULL;
                   break;
               }
               else
               {
                   delete Curr;
                   Prev->Next=Nxt;
                   break;
               }
           }
           
        }
        Prev=Curr;
        Curr=Curr->Next;
    }
    return  szBlock;
};
void DeleteList()
{
    Node *Curr,*Next;
    Curr=BegList;
    while (1)
    {
      Next=Curr->Next;
      delete Curr;
      if (Next == NULL) break;
      Curr=Next;
    }
};
   
// Распечатать список
 
void PrintList()
{
    Node *Curr,*Next;
    Curr=BegList;
    while (1)
    {
      Next=Curr->Next;
      cout << Curr->memSize << endl; 
      if (Next == NULL) break;
      Curr=Next;
    }
};
           
int main(int argc, char* argv[])
{
    int szB[]={100,200,300,400,500};
    long bs,bq;
    cout << "Initial List:" << endl;
    MakeList (szB,sizeof(szB)/sizeof(int));
    cout << endl << "Enter block size: ";
    cin >> bs;
    if ((bq=searchBlock(bs)) > 0)
        cout << "Block (" << bq << " ) is found" << endl;
    else
        cout << "Block not found!" << endl;
    cout << endl;
    PrintList();
    DeleteList();
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 10:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю) (C++):

Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов - C++
#include &lt;iostream.h&gt; #include &lt;stdlib.h&gt;2 #include &lt;conio.h&gt; using namespace std; struct Element { public: double...

Переделать двусвязный список в двусвязный кольцевой - C++
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и второй вопрос как обеспечить вставку...

Переделать на Двусвязный список - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string.h&gt; #include &lt;iomanip&gt; #include &lt;stdlib.h&gt; using namespace std; struct...

Как переделать двусвязный список в циклический c++ - C++
Как переделать двусвязный список в циклический c++

Переделать программу с односвязного на двусвязный список - C++
Помогите переделать програмку с односв'язного на двосв'язний список. Условие задачи было такое: реализовать двосв'язный список, считать...

Возможно ли как-то переделать односвязный список в двусвязный? - C++
Собственно вопрос в названии. Возможно ли переделать односвязный список в двусвязный? Или проще написать программу наново? Вот сама...

23
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 11:14 #2
Lonter, а может сначала воспользоваться поиском? Тема уже много раз поднималась.
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 12:21  [ТС] #3
В том и суть что не нашел то что мне надо
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:28 #4
Lonter, так напишите задание лучше.
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 12:30  [ТС] #5
Моделирование распределения памяти в операционной системе. Дан линейный двусвязный список свободных блоков памяти (адрес начала блока, размер блока). На входе подается запрос на блок памяти определенного размера. Требуется найти в списке первый подходящий по размеру узел, произвести необходимые изменения в списке или выдать сообщение, что подходящего блока памяти в списке нет.
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:33 #6
Lonter, и что именно у вас не получается? И как задавать размер каждого блока памяти?)
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 12:38  [ТС] #7
ну я же скинул с односвязными) а не могу под двусвязные переделать)
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:50 #8
Lonter, не, ну вы смеетесь, что вам не понятно? Я так понимаю это не ваш код?
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 12:51  [ТС] #9
Конечно не мой=)
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 12:57 #10
Lonter, а вам не кажется это уже наглостью? мало того что код не ваш, так вы хотите чтобы вам его еще и исправили, а вы что сделаете?
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 13:00  [ТС] #11
это отдельная программа.....половину уж я точно сам написал, просто товарищ подправил, где были косяки.... а теперь уже следующее задание... надо сделать тоже что с односвязным только с двусвязным, а я в двусвязных ни шлеп ногой

Добавлено через 54 секунды
И вообще товарищ дорогой, сарказм надо чуять за версту!
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 13:05 #12
Lonter, так а что мешает взять книжку и почитать? Отличие двусвязного списка от односвязного в наличие указателя на предыдущий элемент.
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 13:06  [ТС] #13
так вот я и не могу догнать зачем он вообще нужен?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 13:12 #14
Lonter, я не супер спец в объяснении, но в отличие от односвязного можно идти как с начала в конец, так и с конца в начало, плюс добавление в конец не требует прохода по всему списку для поиска конца, так как конец мы сами будем знать Tail.
0
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
22.04.2013, 13:14  [ТС] #15
то есть грубо говоря, мне надо будет изменить только одну функцию, ввода и в глобальной переменной?
0
22.04.2013, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 13:14
Привет! Вот еще темы с ответами:

Нужно переделать прогу! - C++
Нужно переписать код, чтобы не было меток)))) #include&lt;math.h&gt; #include&lt;stdio.h&gt; #include&lt;alloc.h&gt; #include&lt;conio.h&gt; ...

Под С++ нужно переделать - C++
while pos(' ',s)&gt;0 do{пока есть пробелы} begin s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово} k:=0; for i:=1 to...

Нужно переделать программу с С++ под С - C++
Доброе утро форумчани! Есть программа написанная на С++ #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; int...

Однонаправленный список: переделать код под консоль - C++
Имеется три файла, помогите пожалуйста, мне нужно эту задачу реализовать в Консольном приложении в Визуал студио 2008, Чтоб на консоль...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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