欧美中文字幕一区二区三区亚洲_在线成人直播_国产精品玖玖玖在线资源_久久99最新地址

游戲產業研究網

C++學生鏈表求StudentSet類的定義

#include<iostream>

#include<string>

using namespace std;

class birth

{?

private:

?int year;

?int month;

?int day;

public:

??? birth(int yy,int mm,int dd){year=yy;month=mm;day=dd;}

?~birth(){}

?birth(birth &b);

?void show();

};

birth::birth(birth &b)

{

??? year=b.year;

?month=b.month;

?day=b.day;

}

void birth::show()

{

?cout<<出生日期:<<year<<-<<month<<-<<day<<endl;

}

class people

{

private:

?long no;

?string name;

?char sex;

?long ID;

?birth Birth;

public:

?people(long NO,string Name,char Sex,birth &b,long XID);

?~people(){}

?people(people &p);

?void showpeople();

};

people::people(long NO,string Name,char Sex,birth &b,long XID):Birth(b),name(Name)

{

?no=NO;

?sex=Sex;

?ID=XID;

}

people::people(people &p):Birth(p.Birth),name(p.name)

{

?no=p.no;

?sex=p.sex;

?ID=p.ID;

}

void people::showpeople()

{

?cout<<編號:<<no<<endl;

?cout<<姓名:<<name<<endl;

?cout<<性別:<<sex<<endl;

?cout<<身份證號:<<ID<<endl;

??? Birth.show();

}

class student:virtual public people

{

private:

?int classNo;

public:

?student(people &p,int classno);

?~student(){}

?student(student &s);

?void showstudent();

};

student::student(people &p,int classno):people(p)

{

?classNo=classno;

}

student::student(student &s):people(s)

{

?classNo=s.classNo;

}

void student::showstudent()

{?

?people::showpeople();

?cout<<班級:<<classNo<<endl;

}

class teacher:public people

{

private:

?string principalship;

?string department;

public:

?teacher(string Principalship,string Department,people &p);

?~teacher(){}

?teacher(teacher &t);

?void showteacher();

};

teacher::teacher(string Principalship,string Department,people &p):people(p),principalship(Principalship),department(Department){}

teacher::teacher(teacher &t):people(t),principalship(t.principalship),department(t.department){}

void teacher::showteacher()

{

?people::showpeople();

?cout<<職務:<<principalship<<endl;

?cout<<部門:<<department<<endl;

}

class graduate:virtual public student

{

private:

?string subject;

?teacher adviser;

public:

??? graduate(student &s,string Subject,teacher Adviser);

??? ~graduate(){}

?graduate(graduate &g);

??? void showgraduate();

};

graduate::graduate(student &s,string Subject,teacher Adviser):people(s),subject(Subject),student(s),adviser(Adviser){}

graduate::graduate(graduate &g):people(g),student(g),adviser(g.adviser),subject(g.subject){}

void graduate::showgraduate()

{

?student::showstudent();

?cout<<專業:<<subject<<endl;

?cout<<導師:;

?adviser.showteacher();

}

class TA:virtual public graduate,virtual public teacher

{

public:

?TA(graduate &g,teacher &t);

?~TA(){}

?TA(TA &ta);

?void showTA();

};

TA::TA(graduate &g,teacher &t):people(g),student(g),graduate(g),teacher(t)

{}

//TA::TA(TA &ta):people(ta),student(ta),graduate(ta),teacher(ta)

//{}

void TA::showTA()

{

?graduate::showgraduate();

?teacher::showteacher();

}

void main()

{?

?birth? b1(1991,1,1);

?people p1(901,張三,'m',b1,13141314),p2(902,李四,'f',b1,17151715);

??? p1.showpeople();

?cout<<*******************<<endl;

?p2.showpeople();

?cout<<*******************<<endl;

?student s1(p1,903);

?s1.showstudent();

?cout<<*******************<<endl;

?teacher t1(教授,計算機,p2);

?t1.showteacher();

?cout<<*******************<<endl;

?graduate g1(s1,軟件工程,t1);

??? g1.showgraduate();

?cout<<*******************<<endl;

?TA tt1(g1,t1);

?tt1.showTA();

}

//9_6.cpp

#include <iostream>

#include <cstdlib>

#include 9_6.h

using namespace std;

template <class T>

Node<T> *LinkedList<T>::GetNode(const T& item, Node<T>* ptrNext)?//生成新結點

{

?? Node<T> *p;

?? p = new Node<T>(item,ptrNext);

?? if (p == NULL)

?? {

????cout << Memory allocation failure!\n;

????exit(1);

?? }

?? return p;

}

template <class T>

void LinkedList<T>::FreeNode(Node<T> *p) //釋放結點

{

?? delete p;

}

template <class T>

void LinkedList<T>::CopyList(const LinkedList<T>& L) //鏈表復制函數

{

?? Node<T> *p = L.front;?//P用來遍歷L

?? int pos;

?? while (p != NULL)?//將L中的每一個元素插入到當前鏈表最后

?? {

????InsertRear(p->data);

????p = p->NextNode();

?? }

?? if (position == -1)?//如果鏈表空,返回

????return;

?? //在新鏈表中重新設置prevPtr和currPtr

?? prevPtr = NULL;

?? currPtr = front;

?? for (pos = 0; pos != position; pos++)

?? {

????prevPtr = currPtr;

????currPtr = currPtr->NextNode();

?? }

}

template <class T>? //構造一個新鏈表,將有關指針設置為空,size為0,position為-1

LinkedList<T>::LinkedList(void): front(NULL), rear(NULL),

????prevPtr(NULL),currPtr(NULL), size(0), position(-1)

{}

template <class T>

LinkedList<T>::LinkedList(const LinkedList<T>& L)? //拷貝構造函數

{

?? front = rear = NULL;

?? prevPtr = currPtr = NULL;

?? size = 0;

?? position = -1;

?? CopyList(L);

}

template <class T>

void LinkedList<T>::ClearList(void)?//清空鏈表

{

?? Node<T> *currPosition, *nextPosition;

?? currPosition = front;

?? while(currPosition != NULL)

?? {

????nextPosition = currPosition->NextNode(); //取得下一結點的地址

????FreeNode(currPosition);?//刪除當前結點

????currPosition = nextPosition;?//當前指針移動到下一結點

?? }

?? front = rear = NULL;

?? prevPtr = currPtr = NULL;

?? size = 0;

?? position = -1;

}

template <class T>

LinkedList<T>::~LinkedList(void)?//析構函數

{?? ClearList();? }

template <class T>

LinkedList<T>& LinkedList<T>::operator=(const LinkedList<T>& L)//重載=

{

?? if (this == &L)?// 不能將鏈表賦值給它自身

????return *this;

?? ClearList();

?? CopyList(L);

?? return *this;

}

template <class T>

int LinkedList<T>::ListSize(void) const?//返回鏈表大小的函數

{?? return size;? }

template <class T>

int LinkedList<T>::ListEmpty(void) const?//判斷鏈表為空否

{?? return size == 0;? }

template <class T>

void LinkedList<T>::Next(void)?//將prevPtr和currPtr向前移動一個結點

{

?? if (currPtr != NULL)

?? {

????prevPtr = currPtr;

????currPtr = currPtr->NextNode();

????position++;

?? }

}

template <class T>

int LinkedList<T>::EndOfList(void) const?// 判斷是否已達表尾

{?? return currPtr == NULL;? }

template <class T>

int LinkedList<T>::CurrentPosition(void) const? // 返回當前結點的位置

{?? return position;? }

template <class T>

void LinkedList<T>::Reset(int pos)?//將鏈表當前位置設置為pos

{

?? int startPos;

?? if (front == NULL)?// 如果鏈表為空,返回

????return;

?? if (pos < 0 || pos > size-1)?// 如果指定位置不合法,中止程序

?? {

????cerr << Reset: Invalid list position: << pos << endl;

????return;

?? }

?? // 設置與遍歷鏈表有關的成員

?? if(pos == 0)?// 如果pos為0,將指針重新設置到表頭

?? {

????prevPtr = NULL;

????currPtr = front;

????position = 0;

?? }

?? else?// 重新設置 currPtr, prevPtr, 和 position

?? {

????currPtr = front->NextNode();

????prevPtr = front;

????startPos = 1;

??? for(position=startPos; position != pos; position++)

??? {

????prevPtr = currPtr;

????currPtr = currPtr->NextNode();

????}

?? }

}

template <class T>

T& LinkedList<T>::Data(void)?//返回一個當前結點數值的引用

{

?? if (size == 0 || currPtr == NULL)?// 如果鏈表為空或已經完成遍歷則出錯

?? {

????cerr << Data: invalid reference! << endl;

????exit(1);

?? }

?? return currPtr->data;

}

template <class T>

void LinkedList<T>::InsertFront(const T& item)?? // 將item插入在表頭

{

?? if (front != NULL)?// 如果鏈表不空則調用Reset

????Reset();

?? InsertAt(item);?// 在表頭插入

}

template <class T>

void LinkedList<T>::InsertRear(const T& item)?? // 在表尾插入結點

{

?? Node<T> *newNode;

?? prevPtr = rear;

?? newNode = GetNode(item);?// 創建新結點

?? if (rear == NULL)?// 如果表空則插入在表頭

????front = rear = newNode;

?? else

?? {

????rear->InsertAfter(newNode);

????rear = newNode;

?? }

?? currPtr = rear;

?? position = size;

?? size++;

}

template <class T>

void LinkedList<T>::InsertAt(const T& item)?// 將item插入在鏈表當前位置

{

?? Node<T> *newNode;

?? if (prevPtr == NULL)?// 插入在鏈表頭,包括將結點插入到空表中

?? {

????newNode = GetNode(item,front);

????front = newNode;

?? }

?? else?// 插入到鏈表之中. 將結點置于prevPtr之后

?? {

????newNode = GetNode(item);

????prevPtr->InsertAfter(newNode);

?? }

?? if (prevPtr == rear)?//正在向空表中插入,或者是插入到非空表的表尾

?? {

????rear = newNode;?//更新rear

????position = size;?//更新position

?? }

?? currPtr = newNode;?//更新currPtr

?? size++;?//使size增值

}

template <class T>

void LinkedList<T>::InsertAfter(const T& item)? // 將item 插入到鏈表當前位置之后

{

?? Node<T> *p;

?? p = GetNode(item);

?? if (front == NULL)? // 向空表中插入

?? {

????front = currPtr = rear = p;

????position = 0;

?? }

?? else?// 插入到最后一個結點之后

?? {

????if (currPtr == NULL)

????currPtr = prevPtr;

????currPtr->InsertAfter(p);

????if (currPtr == rear)

????{

????rear = p;

????position = size;

????}

????else

????position++;

????prevPtr = currPtr;

????currPtr = p;

?? }

?? size++;????// 使鏈表長度增值

}

template <class T>

T LinkedList<T>::DeleteFront(void)?// 刪除表頭結點

{

?? T item;

?? Reset();

?? if (front == NULL)

?? {

????cerr << Invalid deletion! << endl;

????exit(1);

?? }

?? item = currPtr->data;

?? DeleteAt();

?? return item;

}

????

template <class T>

void LinkedList<T>::DeleteAt(void)?// 刪除鏈表當前位置的結點

{

?? Node<T> *p;

?? if (currPtr == NULL)?// 如果表空或達到表尾則出錯

?? {

????cerr << Invalid deletion! << endl;

????exit(1);

?? }

?? if (prevPtr == NULL)?// 刪除將發生在表頭或鏈表之中

?? {

????p = front;?// 保存頭結點地址

????front = front->NextNode();?//將其從鏈表中分離

?? }

?? else?//分離prevPtr之后的一個內部結點,保存其地址

????p = prevPtr->DeleteAfter();

?? if (p == rear)?// 如果表尾結點被刪除

?? {

????rear = prevPtr;?//新的表尾是prevPtr

????position--;?//position自減

?? }

?? currPtr = p->NextNode();?// 使currPtr越過被刪除的結點

?? FreeNode(p);?// 釋放結點,并

?? size--;?//使鏈表長度自減

}

一個是鏈表類,用派生的方式是用就行

欧美中文字幕一区二区三区亚洲_在线成人直播_国产精品玖玖玖在线资源_久久99最新地址
精品在线播放免费| 精品国产乱码久久久久久1区2区| 91在线视频网址| 国产精品成人免费在线| 成人激情文学综合网| 国产精品久久一卡二卡| 91视频精品在这里| 亚洲国产日韩a在线播放| 欧美日韩一区二区欧美激情| 丝袜美腿高跟呻吟高潮一区| 日韩美女主播在线视频一区二区三区| 麻豆精品一区二区综合av| 精品国产污污免费网站入口| 国产91丝袜在线观看| 亚洲免费观看在线视频| 欧美色视频一区| 久久国产三级精品| 国产欧美日韩另类视频免费观看| 白白色亚洲国产精品| 亚洲综合精品自拍| 精品国内二区三区| 一道本成人在线| 免费不卡在线观看| 国产精品成人免费在线| 欧美一二三四区在线| 成人三级伦理片| 日韩高清一级片| 国产精品久久久久久久久免费丝袜| 色婷婷久久久亚洲一区二区三区 | 日韩av网站免费在线| 久久综合久久综合亚洲| 欧美私模裸体表演在线观看| 看国产成人h片视频| 国产精品国产三级国产有无不卡| 555夜色666亚洲国产免| 91视频91自| 成人一区二区在线观看| 久久福利视频一区二区| 婷婷六月综合亚洲| 亚洲精品一二三| 国产精品色哟哟| 久久亚洲捆绑美女| 91精品免费在线观看| 色综合视频在线观看| 国产福利一区二区三区视频在线| 首页亚洲欧美制服丝腿| 伊人性伊人情综合网| 成人免费在线播放视频| 久久久精品天堂| 日韩精品专区在线影院重磅| 欧美精品v国产精品v日韩精品| 色综合久久六月婷婷中文字幕| 国产一区二区三区国产| 麻豆高清免费国产一区| 日本中文字幕一区二区有限公司| 亚洲精品久久久蜜桃| 国产精品国产三级国产aⅴ无密码| 欧美xxxx老人做受| 日韩欧美中文一区| 欧美大片免费久久精品三p| 精品国产91亚洲一区二区三区婷婷 | 久久综合成人精品亚洲另类欧美| 在线播放亚洲一区| 欧美久久久久久蜜桃| 欧美日韩国产综合一区二区 | 日韩国产精品大片| 日本中文字幕一区| 激情综合网av| 高清不卡一区二区| 成人app网站| 91美女片黄在线观看| 成人app软件下载大全免费| 成人av在线一区二区| 91伊人久久大香线蕉| 日韩一区二区中文字幕| 日韩一级完整毛片| 精品国产123| 国产精品久久久久久久久图文区| 亚洲少妇最新在线视频| 一区二区成人在线| 老司机一区二区| 国产成人精品三级| 欧美亚洲动漫另类| 日韩精品一区二区在线观看| 欧美激情在线一区二区| 亚洲欧美aⅴ...| 蜜臀av一区二区三区| 成人手机在线视频| 欧美日韩成人一区二区| 久久久综合九色合综国产精品| 国产精品免费丝袜| 偷拍一区二区三区| 北条麻妃国产九九精品视频| 制服丝袜激情欧洲亚洲| 欧美激情一区在线观看| 日韩电影免费一区| 不卡的av电影在线观看| 日韩一区二区精品| 亚洲激情校园春色| 韩国理伦片一区二区三区在线播放| 99精品欧美一区| 欧美成人一区二区三区片免费| 亚洲色图另类专区| 精品在线观看免费| 欧美视频一区二区三区在线观看| 欧美精品一区二区三| 一区二区激情视频| 国产成人在线观看| 日韩免费成人网| 精品免费国产一区二区三区四区| 6080国产精品一区二区| 亚洲欧美电影一区二区| 国产成人亚洲精品狼色在线| 欧美一区二区三区四区五区| 亚洲欧美色图小说| 国产一二精品视频| 日韩美一区二区三区| 午夜不卡在线视频| 91国产精品成人| 国产精品女上位| 国内偷窥港台综合视频在线播放| 欧美私人免费视频| 亚洲午夜激情网页| 在线免费观看视频一区| 亚洲人xxxx| 91在线视频网址| 亚洲三级电影网站| 色综合色狠狠天天综合色| 国产精品入口麻豆九色| 99热在这里有精品免费| 欧美激情一区二区| 粉嫩av一区二区三区在线播放| 精品欧美乱码久久久久久| 蜜桃久久久久久久| 精品久久久久久最新网址| 美女诱惑一区二区| 精品国产3级a| 国产一区二区在线观看免费| 精品精品国产高清一毛片一天堂| 久久 天天综合| 国产亚洲欧美色| 99久久精品国产一区二区三区| 国产精品久久久久精k8| 91免费视频网| 亚洲韩国精品一区| 日韩欧美另类在线| 国产一区二区导航在线播放| 久久嫩草精品久久久精品一| 一区二区三区毛片| 欧美色图免费看| 经典三级在线一区| 国产精品天美传媒| 欧美视频在线一区二区三区| 日本网站在线观看一区二区三区 | 亚洲一区二区三区自拍| 91精品麻豆日日躁夜夜躁| 九九**精品视频免费播放| 国产精品视频一区二区三区不卡| 成人福利视频网站| 污片在线观看一区二区| 久久色视频免费观看| 91免费看视频| 久久精品国产99| 国产精品国产三级国产普通话99 | 欧美xxxxx牲另类人与| 成人va在线观看| 秋霞国产午夜精品免费视频| 国产人久久人人人人爽| 欧美日韩色综合| 国产99久久精品| 日本vs亚洲vs韩国一区三区 | 国产亚洲精品7777| 欧美天堂亚洲电影院在线播放| 91亚洲男人天堂| 舔着乳尖日韩一区| 国产精品网站在线| 欧美放荡的少妇| 成人不卡免费av| 韩国中文字幕2020精品| 亚洲国产中文字幕| 中文乱码免费一区二区| 91精品一区二区三区在线观看| 成人av在线资源网站| 激情成人综合网| 日韩精品三区四区| 亚洲国产你懂的| 亚洲人成亚洲人成在线观看图片 | 亚洲日本在线观看| 久久久亚洲国产美女国产盗摄| 欧美手机在线视频| 99re8在线精品视频免费播放| 精品一区二区三区在线观看| 五月婷婷另类国产| 亚洲国产精品欧美一二99| 最新中文字幕一区二区三区| 久久综合av免费| 26uuu欧美| 日韩欧美电影一区| 欧美日韩精品一区二区三区蜜桃| 色综合咪咪久久|