欧美中文字幕一区二区三区亚洲_在线成人直播_国产精品玖玖玖在线资源_久久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最新地址
91久久一区二区| 欧美精品一级二级| 制服.丝袜.亚洲.中文.综合| 日韩午夜在线播放| 亚洲精品一二三四区| 极品尤物av久久免费看| 在线观看视频91| 国产精品卡一卡二| 精品一区二区三区在线播放视频| 一本一本久久a久久精品综合麻豆| 精品少妇一区二区三区视频免付费 | 国产乱人伦偷精品视频免下载| 91啪亚洲精品| 中文字幕一区二区5566日韩| 久久av中文字幕片| 欧美一区二区大片| 日本最新不卡在线| 欧美午夜一区二区| 亚洲自拍另类综合| 欧美日韩一区视频| 婷婷久久综合九色综合绿巨人| 91小视频免费观看| 亚洲欧美日韩国产一区二区三区 | 久久精品一区四区| 国产一区在线看| 久久综合精品国产一区二区三区| 免费观看日韩av| 日韩欧美国产不卡| 久久9热精品视频| 精品va天堂亚洲国产| 国产呦精品一区二区三区网站| 欧美xxxxxxxxx| 国产精品一二三| 国产亚洲综合色| 成人黄色小视频| 有坂深雪av一区二区精品| 色婷婷久久久综合中文字幕| 尤物视频一区二区| 欧美日韩国产综合久久| 日韩电影一区二区三区四区| 91精品免费观看| 国产精品一区二区x88av| 国产亚洲综合av| 色噜噜夜夜夜综合网| 爽好久久久欧美精品| 精品嫩草影院久久| 成人网页在线观看| 亚洲国产精品一区二区www| 在线电影国产精品| 国产精品一二三在| 亚洲在线视频一区| 日韩精品影音先锋| 成人久久18免费网站麻豆 | 国产精品你懂的| 欧美日韩综合在线免费观看| 日韩电影在线免费看| 欧美激情在线看| 欧美日韩国产首页在线观看| 国精产品一区一区三区mba视频| 日本一区二区免费在线观看视频 | 精品美女被调教视频大全网站| 国产一区三区三区| 亚洲欧美另类小说视频| 777精品伊人久久久久大香线蕉| 国产一区二区三区四区在线观看| 国产精品传媒视频| 欧美成人精品3d动漫h| 国产1区2区3区精品美女| 亚洲国产精品视频| 亚洲国产精品黑人久久久| 欧美午夜电影一区| 成人性视频网站| 亚洲韩国一区二区三区| 日本一区二区三级电影在线观看| 欧美日韩精品系列| 99久久久无码国产精品| 精品系列免费在线观看| 亚洲一二三四区不卡| 久久噜噜亚洲综合| 日韩午夜激情视频| 在线免费精品视频| 成人一区二区三区| 久草在线在线精品观看| 午夜亚洲福利老司机| 中文字幕中文字幕在线一区| 久久综合九色综合97婷婷| 欧美日产国产精品| 色噜噜狠狠一区二区三区果冻| 国产精品一区二区久久不卡| 美女诱惑一区二区| 亚洲高清视频的网址| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美大片一区二区| 欧美一卡在线观看| 在线播放日韩导航| 欧美视频一区二区| 在线免费亚洲电影| 欧美综合色免费| 国产欧美精品在线观看| 日韩精品中文字幕在线一区| 欧美性猛片xxxx免费看久爱| 色婷婷综合久久久中文一区二区| 成人高清视频在线| 粉嫩欧美一区二区三区高清影视| 久久国产精品色婷婷| 美女脱光内衣内裤视频久久影院| 亚洲a一区二区| 亚洲国产一区二区视频| 亚洲一区二区三区国产| 亚洲欧美视频在线观看| 亚洲精品美国一| 一区二区高清免费观看影视大全| 亚洲精品国产无天堂网2021| 国产精品卡一卡二卡三| 亚洲少妇中出一区| 亚洲夂夂婷婷色拍ww47| 偷拍与自拍一区| 奇米四色…亚洲| 精品一区二区在线播放| 福利电影一区二区三区| av男人天堂一区| 欧美主播一区二区三区| 欧美日韩高清在线| 日韩精品一区二区三区老鸭窝| 精品久久久影院| 国产精品视频一区二区三区不卡| 国产精品毛片高清在线完整版| 亚洲欧美激情一区二区| 亚洲国产日韩一级| 久久99久久99小草精品免视看| 国产中文一区二区三区| 成人激情小说网站| 欧美午夜精品一区二区三区 | 国产清纯白嫩初高生在线观看91| 国产欧美精品区一区二区三区 | 日韩欧美高清在线| 亚洲国产高清在线观看视频| 亚洲女人的天堂| 午夜精品成人在线| 国产馆精品极品| 欧洲另类一二三四区| 日韩欧美国产一区二区在线播放| 中文字幕国产精品一区二区| 亚洲国产精品久久一线不卡| 久久成人麻豆午夜电影| 91香蕉国产在线观看软件| 欧美丰满少妇xxxxx高潮对白| 久久综合色综合88| 亚洲一区二区在线免费观看视频| 免费在线视频一区| 成人av综合一区| 91精品国产免费久久综合| 国产免费久久精品| 日本91福利区| 91视视频在线观看入口直接观看www| 欧美精品日韩一区| 中文字幕中文字幕一区二区| 秋霞av亚洲一区二区三| 99精品欧美一区二区三区小说| 欧美一区二区三区系列电影| 国产精品动漫网站| 黄网站免费久久| 欧美日韩黄色一区二区| 中文字幕一区二区三区色视频| 青青草伊人久久| 日本韩国欧美三级| 国产精品免费av| 国产在线精品一区二区三区不卡 | 亚洲精品在线一区二区| 亚洲一区二区三区中文字幕在线| 国产精品一级片| 日韩欧美一区电影| 午夜婷婷国产麻豆精品| 色香蕉成人二区免费| 欧美国产精品一区二区| 精品一区二区三区欧美| 欧美日韩激情一区| 亚洲图片欧美色图| 日本道色综合久久| 中文字幕人成不卡一区| 国产精品一二三四区| 欧美不卡一区二区| 日本aⅴ精品一区二区三区| 欧美日韩精品一区二区在线播放| 中文字幕一区二区三中文字幕| 成人性生交大片免费看中文| 亚洲精品一线二线三线| 天堂va蜜桃一区二区三区漫画版| hitomi一区二区三区精品| 国产欧美综合色| 国产99久久久国产精品免费看| www成人在线观看| 国内精品久久久久影院色| 日韩欧美激情一区| 久久精品999| 欧美mv日韩mv| 国产成人精品亚洲午夜麻豆| 国产亚洲综合在线| 91丨九色丨黑人外教| 亚洲免费观看高清完整|