本文整理汇总了C++中List::AddSort方法的典型用法代码示例。如果您正苦于以下问题:C++ List::AddSort方法的具体用法?C++ List::AddSort怎么用?C++ List::AddSort使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类List
的用法示例。
在下文中一共展示了List::AddSort方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DFS
unsigned long long int DFS(Vertex* input, Vertex* sourceMinistry) { //Depth-First Search bāzēts algoritms
input->TaggedBy.Reset();
if (input->TaggedBy.FindInVP(sourceMinistry->ID)) { //Meklē, vai dotā izd. pozīcija ir jau reiz "apmeklēta", skatoties no dotās ministrijas (meklē ciklus)
Error* E3 = new Error(sourceMinistry->ID);
E3List.AddSort(E3);
return 0;
}
input->TaggedBy.Reset();
input->Visited = true;
VertexPointer* TB = new VertexPointer(sourceMinistry);
input->TaggedBy.AddSort(TB); //Pievieno virsotnei, ka tā ir tikusi apmeklēta, skatoties no dotās ministrijas.
input->Subs.Reset();
if (input->Subs.Size() == 0) { //Ja nav apakšpozīciju, jāatgriež šīs pozīcijas Amount
return input->Amount;
}
unsigned long long int sum = 0;
while (VertexPointer* C = input->Subs.Current()) {
sum += DFS(C->PointsTo, sourceMinistry); //Atrod apakšpozīciju kopsummu
input->Subs.Next();
}
unsigned long long int tmpDiff = sum > input->Amount ? sum - input->Amount : input->Amount - sum;
if (tmpDiff > 4000000000) tmpDiff = 4000000001;
input->Difference = (unsigned int)tmpDiff;
input->Subs.Reset();
return sum;
}
示例2: DoAll
void DoAll() {
VertexList.Reset();
for (int i = 0; i < ministryCount; i++) {
DFS(VertexList.Current(), VertexList.Current());
VertexList.Next();
}
VertexList.Reset();
while (Vertex* C = VertexList.Current()) {
if (!C->Visited) { //Ja virsotne nav tikusi apmeklēta, tai nav ministrijas
Error* E2 = new Error(C->ID);
E2List.AddSort(E2);
}
if (C->Difference > 0) {
Error_4* E4 = new Error_4(C->ID, C->Difference);
E4List.AddSort(E4);
}
if (C->TaggedBy.Size() > 1) { //Ja virsotni apmeklējusi vairāk kā viena ministrija, ir kopīga pozīcija
VertexPointer* vp = new VertexPointer(C);
CPList.AddSort(vp);
}
VertexList.Next();
}
VertexList.Reset();
}
示例3: AddVertex
void AddVertex(int parent, int child, unsigned int amount) {
VertexList.Reset();
Vertex* NewSub = new Vertex(child, amount);
Vertex* ParentV = NULL;
Vertex* ChildV = NULL;
VertexPointer* ParentToSub;
bool SubIsNew = true;
while(Vertex* C = VertexList.Current()) {
if(C->ID == child) { SubIsNew = false; ChildV = C; if(ParentV) break; } //Atrod pozīciju un apakšpozīciju, ja tādas eksistē
if(C->ID == parent) { ParentV = C; if(!SubIsNew) break; }
VertexList.Next();
}
VertexList.Reset();
if(ParentV) {
if(SubIsNew) ParentToSub = new VertexPointer(NewSub); //Norāde uz apakšpozīciju
else {
ParentToSub = new VertexPointer(ChildV);
if(ChildV->Amount == 4000000100) ChildV->Amount = amount; //Apakšpozīcija iepriekš bija bez virspozīcijas
}
if (ParentV->Subs.FindInVP(child)) return; //Ja apakšpozīcija jau ir pievienota, to ignorē
ParentV->Subs.Add(ParentToSub); //Pievieno apakšpozīciju dotajai virspozīcijai
if(SubIsNew) VertexList.Add(NewSub); //Pievieno apakšpozīciju virsotņu sarakstam (ja tā ir jauna)
} else {
ParentV = new Vertex(parent, 4000000100); //Norāda, ka pozīcijai nav virspozīcijas (neattiecas uz ministrijām)
if(SubIsNew) ParentToSub = new VertexPointer(NewSub);
else {
ParentToSub = new VertexPointer(ChildV);
ChildV->Amount = amount; //Tā kā, ja pievieno jau eksistējošu apakšpozīciju, Amount nemainās, to var piešķirt.
}
ParentV->Subs.Add(ParentToSub);
VertexList.Add(ParentV);
if(SubIsNew) VertexList.Add(NewSub);
}
if (child <= ministryCount) {
Error* e1 = new Error(child); //Mēģina pievienot ministriju kā apakšpozīciju
E1List.AddSort(e1);
}
}
示例4: Add
void User::Add(List &list) //添加物流信息,其中调用异常处理
{
Node *head,*p;
string name,jijian_phone,Note,shoujian_phone;
string num_t,money_t,baojia_t; //"_t"表示临时变量
int num,money,baojia;
int tag1=0,tag2=0,tag3=0,i;
head=list.Gethead(); //调用Gethead函数(AddrList中),取首指针
p=new Node;
cout<<"包裹单号 收件人名称 收件人电话 寄件人电话 备注 邮费 保价金额,空格隔开"<<endl;
cin>>num_t>>name>>shoujian_phone>>jijian_phone>>Note>>money_t>>baojia_t;
cin.ignore(1024,'\n'); //将键盘输入的数据暂时保存到临时变量中
/***********以下的代码用来判断输入的数据是否合理,不合理将抛出异常************/
for(i=0;i<num_t.length();i++){
if(num_t[i]<='9'&&num_t[i]>='0')
{
}
else
{
tag1=1;
}
}
for(i=0;i<money_t.length();i++)
{
if(money_t[i]<='9'&&money_t[i]>='0') //判断输入是否合法
{
}
else
{
tag2=1;
}
}
for(i=0;i<baojia_t.length();i++){
if(baojia_t[i]<='9'&&baojia_t[i]>='0') //判断输入是否合法
{
}
else
{
tag3=1;
}
}
if(tag1==1||tag2==1||tag3==1)
throw "运单号,运费,保价金额必须都为数字!请重新输入:"; //如果输入不合理将抛出异常
/***********以上的代码用来判断输入的数据是否合理,不合理将抛出异常************/
num=atoi(num_t.c_str()); //如果输入的输入验证为合理,就从string转换为int
money=atoi(money_t.c_str());
baojia=atoi(baojia_t.c_str());
p->SetPackageNum(num); //调用SetPackageNum函数(Node中),修改运单号码
p->SetShoujian_Name(name); //调用SetShoujian_Name函数(Node中),修改收件人姓名
p->SetShoujian_Phone(shoujian_phone); //调用SetShoujian_Phone函数(Node中),修改寄件人电话
p->SetJijian_Phone(jijian_phone); //调用SetJijian_Phone函数(Node中),修改收件人号码
p->SetNote(Note); //调用SetNote函数(Node中),修改备注
p->SetMoney(money); //调用SetMoney函数(Node中),修改价格
p->SetBaojia(baojia); //调用SetBaojia函数(Node中),修改保价金额
list.AddSort(p); //调用AddSort函数(AddrList中),将p指向的结点按包裹号的顺序插入到链表中
}