标题: 链表迭代 [打印本页]

作者: 51黑fan    时间: 2016-1-31 02:49
标题: 链表迭代
// a005.cpp : 定义控制台应用程序的入口点。

//
//链表list<content> l;实质上指向content变量类型的指针,二迭代器就是一个指向链表各个位置的一个指针。所以,
//链表是一个指针,迭代器是一个指向指针的指针的指针。即双重指针。
#include "stdafx.h"
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
class cl1
{
public:
        char name[20];int age;
        cl1(char name[20],int age)
        {
                this->age=age;
                strcpy(this->name,name);
        }
};

int _tmain(int argc, _TCHAR* argv[])
{
       
        list<cl1*> l; //申请类指针为成员的链表
        for(; ;)
        {
        char name[20];
        int age;
        scanf("%s",&name);
        scanf("%d",&age);
        cl1*p1=new cl1(name,age);
        l.push_back(p1);   //把类指针加入链表
        int tem;
        printf("1->YES 2->NO");
        scanf("%d",&tem);
        if(tem==2){break;}       
        }
        list<cl1*>::iterator it=l.begin(); //申请类指针类型的迭代器,并指向链表的begin位置
        while(it != l.end())
        {
                printf("%s--%d--",(*it)->name,(*it)->age);//迭代器本质上是一个指针。在这儿指向链表
                it++;
        }
        it=l.begin();
        while(it!=l.end()) //当迭代器不是指向最后一个是-----------------------------------|
        {                                //                                                                                                |
        delete(*it);//<-----清空迭代器内容。即链表,即cl1的指针,即清空cl1的内存----------|
        it++;
        }
        l.clear();
        return 0;
}








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1