С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Связные списки: вернуть в виде целого числа позицию name из списка - C++

19.06.2014, 10:18. Просмотров 293. Ответов 9
Метки нет (Все метки)

Помогите сделать функцию, которая возвращает в виде целого числа позицию name из списка
Функция которая меняет местами, 2 элемента списка

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
#include <Windows.h>
#include <iostream>
 
using namespace std;
 
struct dino {
    char name[36];
    dino* next;
    dino* prev;
};
 
 
 
 
 
 
void search (dino* first)
{
    char name[36];
    int i=1;
    if(first==NULL){cout<<"Clean\n"; Sleep(1000); return;}
    cout<<"Name forgoten dinosaur: >";
    cin>>name;
    do  {if(strcmp(name,first->name))
            {cout<<i+1<<"-th number with list\n"; Sleep(1000); return;}
        else {
                i++;
                first=first->next;
             }
        }while(first->next);
    cout<<"Sorry... List don't have this Dino\n";Sleep(1000);
    return;
}
void adding(dino* &first){
    system ("CLS");
    dino *p=new dino;
    cout<<"\nEnter Dinosaur name: ";
    cin>>p->name;
    p->next=first;
    first=p;
}
void deleting(dino* &first)
 {
    if(first==NULL){cout<<"Clean ()_()\n"; Sleep(300); return;}
    if(first->next==NULL){
        delete first;
        first=NULL;
        return;
    }
    dino* tmp=first;
    while(tmp->next->next){
        tmp=tmp->next;
    }
    delete tmp->next;
    tmp->next=NULL;
    return;
}
void delling(dino* &first)
{
    if(first==NULL){cout<<"Clean()_()\n"; Sleep(200); return;}
    if(first->next==NULL){
        delete first;
        first=NULL;
        return;
    }
    system ("CLS");
while(first->next)
    deleting(first);
    deleting(first);
    return;
}
 
 void show(dino* first)
 { if(first==NULL){cout<<"Clean!!!\n"; Sleep(200); return;}
    system ("CLS");
 
    if(first->next==0) {cout<<endl<<first->name;  Sleep(4000); return;}
    else {while(first->next)
        {
            cout<<endl<<first->name;
            first=first->next;
        }}
    if(first->next==0) cout<<endl<<first->name;
    cout<<endl;
    system("pause");
 }
 int main()
{
    dino* first=NULL;
    int sw;
    while(1)
    {
        system ("CLS");
        cout<<"1. Enter new Dinosaur\n"<<"2. Delete Dinosaur\n";
        cout<<"3. Search"<<endl<<"4. Clean"<<endl<<"5. Show list"<<endl<<"6. Bubble sort\n"<<"0. Exit"<<endl<<endl<<"....Select please...\n>";
        cin>>sw;
        switch(sw)
        {
            case 1: adding(first); break;
            case 2: deleting(first); break;
            case 3: search(first); break;
            case 4: delling(first); break;
            case 5: show(first);break;
            case 0: return 0; break;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 10:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Связные списки: вернуть в виде целого числа позицию name из списка (C++):

Извлечь 3 бита целого числа A с позиции n и перенести в число B на позицию m - C++
Доброго времени суток.Дана вот такая задача : извлечь 3 бита числа А, начиная с позиции n, и вставить их в число В, начиная с позиции...

Определить позицию самой старшей единицы в битовом представлении данного целого числа - C++
Определить позицию самой старшей единицы в битовом представлении данного целого числа!!

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

Связные списки - C++
Помогите пожалуйста осуществить в программе вот такие вот действия: 1) добавление элементов в начало связного списка; 2)добавление...

Связные списки - C++
12. Использовать (линейные) однонаправленные списки без заглавной звена (рис. А) или с заглавной звеном (рис. Б) при последующем их...

Связные списки - C++
Доброго времени суток. И у меня такая проблема - не могу разобраться со связными списками. Не могли бы вы помочь мне с этим, допустим,...

9
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
19.06.2014, 10:51 #2
Цитата Сообщение от Xoniks Посмотреть сообщение
Помогите сделать функцию, которая возвращает в виде целого числа позицию name из списка
Функция которая меняет местами, 2 элемента списка
для начала добавьте индексацию в структуру и итерируйте её в adding() , потом всё просто - проходим по списку до определённого индекса
0
Xoniks
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 31
19.06.2014, 11:50  [ТС] #3
Ладно с индексацией разобрался.. а как например.. если список двусвязный и надо поменять местами 2 элемента, если они рядом, то нужно поменять 4 указателя, если через несколько элементов, то 16 указателей, как это реализовать?

Добавлено через 2 минуты
у меня есть идея.. бить список на 2 части.. и элементы которые надо поменять местами, сначала, первый раз делим на 2 части, добавляем в конец, и склеиваем, потом второй раз делим на 2 части, и вырезаем элемент, потом вставляем его
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
19.06.2014, 13:29 #4
Цитата Сообщение от Xoniks Посмотреть сообщение
Ладно с индексацией разобрался.. а как например.. если список двусвязный и надо поменять местами 2 элемента, если они рядом, то нужно поменять 4 указателя, если через несколько элементов, то 16 указателей, как это реализовать?
зачем менять связи? меняйте содержание ...
0
Xoniks
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 31
19.06.2014, 13:45  [ТС] #5
препод сказал, что менять содержание это очень сильно бьет по производительности, потому что узлы в списках могут содержать огромное количество данных, и нужно через связи сделать сортировки..
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
19.06.2014, 14:36 #6
Цитата Сообщение от Xoniks Посмотреть сообщение
препод сказал, что менять содержание это очень сильно бьет по производительности, потому что узлы в списках могут содержать огромное количество данных, и нужно через связи сделать сортировки..
есть такое дело, ох уж эти преподы, ну тогда да, менять узлы (правда почему 16?)

o1<->o2<->o3
в o2 2 узла last и next, в o1 next , в о3 last - 4 узла, и в др соответственно 4 узла
0
Xoniks
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 31
19.06.2014, 14:55  [ТС] #7
o1<->o2<->o3<->o4<->o5 (меняю о2 с o4) 16 выходит связей менять
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
19.06.2014, 15:00 #8
Цитата Сообщение от Xoniks Посмотреть сообщение
o1<->o2<->o3<->o4<->o5 (меняю о2 с o4) 16 выходит связей менять
у вас тут 5 элементов, в каждом из которых по 2 узла, их всего 10 , мб я вас не правильно понимаю ....
0
Xoniks
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 31
19.06.2014, 15:38  [ТС] #9
ну вот o2 на него указывает o1 и o3 а он на них аналогично o4 с o3, o5, получается 8 указателей, отрываем, и 8 добавляем, может я не правильно думаю...
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
19.06.2014, 15:43 #10
0
19.06.2014, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 15:43
Привет! Вот еще темы с ответами:

Связные списки - C++
Написать функцию, удаляющую из исходной строки заданный символ. Например, удаление символа ‘i’ из строки “cabin heating” дает в результате...

Связные списки - C++
Друзья, помогите исправить код!!! Программа описывет таблицу о книгах.(Название, автор, стоимость). Почему он поддчеркивает head, next,...

связные списки - C++
12. Використовувати (лінійні) односпрямовані списки без заголовної ланки (мал. а) або з заголовною ланкою (мал. б) при наступному їхньому...

Связные списки - C++
Вот есть код все работает отлично но препод сказал что-бы при вводе элементов в список элементы сортировались вот к примеру 20 5 8 12 1 10...


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

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

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