第15周实践项目-洗牌(3)

来源:互联网 发布:用java打印等腰三角形 编辑:程序博客网 时间:2024/05/20 23:55

问题描述及代码:

/**copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称:hellow.cpp*作者:田甜*完成日期:2016年6月12日*版本号:v1.0**问题描述:洗牌*输入描述:////*程序输出:///*/#include <iostream>#include <ctime>#include <cstdlib>#include <iterator>#include <vector>#include <list>using namespace std;typedef list<int> IntList;typedef unsigned int VIndex;void Listshuffle(IntList &unshuffledList,IntList &shuffledList){    VIndex p,size=unshuffledList.size();    IntList::iterator iter;//list为链式结构,不支持随机存取,需要用迭代器进行访问,但插入和删除操作比vactor简单    while(size)    {        p=rand()%size--;        iter=unshuffledList.begin();        while(p!=0)        {            iter++;            p--;        }        shuffledList.push_back(*iter);        unshuffledList.erase(iter);    }}int main(){    ostream_iterator<int> os(cout," ");    srand(time(NULL));    IntList c1,sc1;    for(VIndex i=0;i<=54;i++)    {        c1.push_back(i);    }    cout<<"Befor shuffled:"<<endl;    copy(c1.begin(),c1.end(),os);    cout<<endl;    Listshuffle(c1,sc1);    cout<<"After shuffled"<<endl;    copy(sc1.begin(),sc1.end(),os);    cout<<endl;    return 0;}
运行结果:

 

心得:

list为链式结构,不支持随机存取,需要用迭代器进行访问,但插入和删除操作比vactor简单

0 0