проблемы hdu1276 очереди солдат обучения [простой список STL]

темы адрес

hdu1276

Повседневный рабочий

Код и объяснение

Название использует список STL, список STL является дважды связанный список. Это не должно быть непрерывным пространство памяти, доступ к данным через указатель, и эффективно удалить вставленное в любом месте, операции вставки и удаления часто в несколько раз. вектор и перечислить преимущества и недостатки , наоборот, они имеют различные сценарии применения:
вектор (1.): меньше вставки и удаление операция, часто элемент произвольного доступа
(2) список: частые вставки и удаление, менее произвольный доступ.
При использовании связанного списка списка, мы должны использовать итераторы. Например, код в этом вопросе, список типа Int, поэтому мы определяем итератор путь list<int>::iterator it;. Это эквивалентно указатель на него, чтобы помочь нам справиться со списком. Например, для первого элемента в связанном списке, мы не можем напрямую использовать [0] , чтобы представить, но должны использовать это, это начало точки здесь, it=a.begin();.
Конечно, при использовании списка STL обратить внимание на файл заголовка #include<list>
ниже это с ++ код для этого вопроса

#include<iostream>
#include<list>
using namespace std;
int main()
{
    int N;
    int x;
    int i; 
    list<int> a;
    list<int>::iterator it; 
    int k;  
    scanf("%d",&N);
    while(N--){
        scanf("%d",&x);
        a.clear();
        for(i=0;i<x;i++){
            a.push_back(i+1);//存每个士兵的编号(索引加1) 
        }
        k=2;//第一次删喊“2”的 
        while(a.size()>3){
            i=0;
            for(it=a.begin();it!=a.end();){
                if((i+1)%k==0){//删除喊“k”的士兵 
                    it=a.erase(it);//it指到下一位的地址 
                }
                else{
                    it++;//it指到下一位的地址 
                }
                i++;
            }
            if(k==2) k = 3;
            else k = 2; 
        }
        for(it=a.begin();it!=a.end();){
            printf("%d",*it);
            it++;
            if(it!=a.end()) printf(" "); 
            else printf("\n");
        } 
    }
    return 0;
} 

рекомендация

отwww.cnblogs.com/hardcoreYutian/p/11367077.html