//
// CStudent.hpp
// 标准C++类库_list
//
// Created by 张凯泽 on 17/3/28.
// Copyright © 2017年 rytong_zkz. All rights reserved.
//
#ifndef CStudent_hpp
#define CStudent_hpp
#include <stdio.h>
#include <list>
typedef struct StudentInfo{
char name[20];
int age;
}DATA;
typedef std::list<DATA> :: iterator POSITION;
class CStudent{
std::list<DATA>List;
public:
CStudent();
~CStudent();
void AddHeader(DATA&data);
void AddTailer(DATA&data);
void ShowNote();
POSITION GetHeadPosition();
POSITION GetTailPosition();
DATA GetNext( POSITION &pos);
DATA GetPrev(POSITION &pos);
int GetCount();
void RemoveAt(POSITION &pos);
DATA& GetAt(POSITION &pos);
void InsertData(POSITION & pos,DATA &data);
};
#endif /* CStudent_hpp */
//
// CStudent.cpp
// 标准C++类库_list
//
// Created by 张凯泽 on 17/3/28.
// Copyright © 2017年 rytong_zkz. All rights reserved.
//
#include "CStudent.hpp"
#include <iostream>
using namespace std;
CStudent ::CStudent()
{
}
CStudent ::~CStudent()
{
List.clear();
}
POSITION CStudent :: GetHeadPosition()
{
return List.begin();
}
POSITION CStudent :: GetTailPosition()
{
return List.end();
}
int CStudent :: GetCount()
{
return List.size();
}
DATA CStudent :: GetNext(POSITION &pos)
{
return *pos++;//先取值再++
}
DATA CStudent :: GetPrev(POSITION &pos)
{
return *(--pos);
}
void CStudent :: AddHeader(DATA&data)
{
List.push_front(data);
}
void CStudent:: AddTailer(DATA&data)
{
List.push_back(data);
}
void CStudent :: RemoveAt(POSITION &pos)
{
List.erase(pos);
}
DATA& CStudent :: GetAt(POSITION &pos)
{
return *pos;
}
void CStudent:: InsertData(POSITION & pos,DATA &data)
{
List.insert(pos, data);
}
void CStudent:: ShowNote()
{
POSITION pos = List.begin();
while (pos != List.end()) {
cout << (*pos) .name <<endl;
pos++;
}
}
//
// main.cpp
// 标准C++类库_list
//
// Created by 张凯泽 on 17/3/27.
// Copyright © 2017年 rytong_zkz. All rights reserved.
//
#include <iostream>
#include <list>
#include "CStudent.hpp"
using namespace std;
int main(int argc, const char * argv[]) {
CStudent sc;
DATA d1 = {"ios",23},d2={"python",32},d3={"C++",43},d4={"c",45},d5={"swift",3},d6={"java",4545};
sc.AddHeader(d1);
sc.AddHeader(d2);
sc.AddHeader(d3);
sc.AddTailer(d4);
sc.AddTailer(d5);
//sc.ShowNote();
cout << "-------------" <<endl;
POSITION pos = sc.GetTailPosition();
while (pos != sc.GetHeadPosition()) {
DATA & data = sc.GetAt(pos);
if (data.age == 3) {
//cout <<"姓名=" <<data.name<<endl;
// sc.RemoveAt(pos);
sc.InsertData(pos, d6);
}
//std:: cout << sc.GetPrev(pos).name <<std:: endl;
sc.GetPrev(pos);
}
for (std::list<DATA> :: iterator i = sc.GetHeadPosition(); i != sc.GetTailPosition(); i++) {
std:: cout << (*i).name << "=" << (*i).age <<"\n" <<std:: endl;
}
list<int>m_list1,m_list2;
m_list1.push_front(12);
m_list1.push_front(2);//头部插入
// m_list1.push_front(4);
// m_list1.push_back(82);
// m_list1.push_back(8);
// m_list1.push_back(44);
m_list2.push_back(83);
m_list2.push_back(28);//尾部插入
//m_list.unique();
//m_list.insert(<#const_iterator __p#>, <#value_type &&__x#>)
m_list1.splice(m_list1.begin(), m_list2);//合并两个链表
m_list1.sort();//对链表进行排序
//cout << *(m_list.begin())<<endl;
cout<<"listOne.begin()--- listOne.end():"<<endl;
std::list<int> :: iterator i;
for (i = m_list1.begin(); i != m_list1.end(); ++i)
cout << *i << " ";
cout << endl;
return 0;
}