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

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

Войти
Регистрация
Восстановить пароль
 
Konyahinzhenya
-23 / 1 / 0
Регистрация: 20.09.2011
Сообщений: 32
#1

Двунаправленный список - C++

24.11.2011, 14:46. Просмотров 442. Ответов 0
Метки нет (Все метки)

Задание :
Группа людей стоит в кругу и каждый выбирает целое положительное число. Затем выбираются одно из их имен и положительное число n. Производится счет по часовой стрелке, начиная с человека с выбранным именем. При этом n-й человек исключается из круга. Выбранное этим человеком число используется для продолжения счета. Эти действия повторяются до тех пор, пока из всего круга остается только один человек. Определите порядок удаления людей из круга и имя оставшегося человека.


Я сделал, что удаляется всегда m-ый человек. Помогите доделать программу , что бы она была как по заданию...(тоесть что бы каждый человек загадывал число и именно на это число после его выбывания продолжался счет)
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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
/*struct Titem
    {
    int n;
    Titem *next,*prev; // следующий, предыдущий
    } *first,*s,*p;    
*/
class Titem
{
  public:
         int n;
         Titem *next,*prev;
}*first,*s,*p;
 
 
int n,m;
 
void add_item(int v)     // функция добавления порядкового номера участника
    {
    Titem *p;  
    if (s==NULL && first==NULL)
        {
            s=new Titem;
            s->n = v; 
            s->next = NULL; 
            s->prev = NULL; 
            first=s;
        }
 
    else
        {
            p = new Titem;
            p->n = v;
            p->next=NULL;
            p->prev=s; 
            s->next=p; 
            s=p;
        }
    }
 
 main ()
    {
    int i;
    cout << "\nvvedite chislo  n ( chislo chelovek) ";
    cin  >> n;
 
    cout << "\nvvedite chislo  m ( vibirite cheloveka) ";
    cin  >> m;
 
    for (i=0; i<n; i++)    //zapuskaem function add_item
            add_item(i+1);
    
      s->next=first;         //zamukaem spisok
    first->prev=s;
 
    p=first; 
    for(i=0; i<n; i++)
        {
            cout << p->n << "  " ;  //vuvodim ishodnuy spsisok
            p=p->next;
        }
    cout << endl;
 
 
    s=first;
    while(n>1)               //Из списка с порядковыми номерами участников удаляем m-ый
                            //по счёту столько   раз, пока не останется один участник
                            //(после удаления    участника считать начинаем со следующего после удалённого)
        {
        p=s;
            for(i=1; i<m; i++)
                p=p->next;
            p->next->prev=p->prev; //Перед удалением m-ого элемента списка выстраивается свзь между предыдущим 
            p->prev->next=p->next;  //и следующим элементами списка
            s=p->next;
            delete p;
            n--;
        }
 
 
    cout << "nomer ostavsh cheloveka   " << s->n << endl;         //nomer ostavshejgosya elementa
 
    system("PAUSE");
    return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2011, 14:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двунаправленный список (C++):

Двунаправленный список - C++
Чемпион мира по футболу. Страна, год последней победы, число побед. Сортировка по названию. Вычисление среднего числа титулов всех...

двунаправленный список - C++
Двунаправленный список.Найти сумму первого и последнего элементарных.Заранее спасибо

двунаправленный список - C++
Используя двунаправленный список, написать программу сложения двух длинных целых чисел. Что такое двунаправленный список понимаю, но как...

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

Двунаправленный список - C++
Люди, объясните пжлст, что такое двунаправленный список?

Двунаправленный список - C++
Как в этом списке поменять ввод элементов с ручного на рандомный, помогите пожалуйста? #include &lt;iostream.h&gt; struct tochd { ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2011, 14:46
Привет! Вот еще темы с ответами:

Двунаправленный список - C++
Вставка элемента в список. Удалениеэлемента из списка Сортировка списка. Поиск элемента в списке.Объединение двух списков Пересечение двух...

Двунаправленный список - C++
Как создать двунаправленный список из целых чисел? и как заменить повторяющиеся последовательности одним числом?

СД Двунаправленный список - C++
Ребят помогите пожалуйста понять что значит сделать двунаправленный список используя обьектно-ориентированное программирование. Хотяб...

Двунаправленный список - C++
Вот в примере елем в список добавл в конец, а как сдел чтобы они добавл в начало ? void List_2::Insert_end_list_2(int data) { Plist...


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

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

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