From 2e8fe9fbb8dfde8998a005c0162cfab6ff753837 Mon Sep 17 00:00:00 2001 From: iridiumR Date: Sat, 23 Oct 2021 01:10:00 +0800 Subject: [PATCH] =?UTF-8?q?5=E5=BE=85=E5=AE=8C=E5=96=84=E7=9A=84=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex5/ex5.cpp | 47 ++++++++++++++++++++------------------- ex5/list.cpp | 62 +++++++++++++++++++++------------------------------- 2 files changed, 50 insertions(+), 59 deletions(-) diff --git a/ex5/ex5.cpp b/ex5/ex5.cpp index 7eae7b3..360fbc6 100644 --- a/ex5/ex5.cpp +++ b/ex5/ex5.cpp @@ -12,20 +12,20 @@ std::string PU[54] = { "7A", "7B", "7C", "7D", "8A", "8B", "8C", "8D", "9A", "9B", "9C", "9D", - "10A", "10B", "10C", "10D", + "XA", "XB", "XC", "XD", "JA", "JB", "JC", "JD", "QA", "QB", "QC", "QD", "KA", "KB", "KC", "KD", - "BlackJoker", "RadJoker"}; + "BJ", "RJ"}; int main() { int xipai_flag = 0; - printf("生成随机扑克序列"); + printf("生成随机扑克序列\n"); srand(time(NULL)); Vec v(54, 2); - v.printall(); + // v.printall(); List l; @@ -34,12 +34,13 @@ int main() for (int i = 0; i <= 53; i++) { l.firstInsert(v.get(i)); - std::cout << PU[l[0]]; - printf("\n"); + std::cout << PU[l[0]] << " "; + if (i % 2 != 0) + printf("\n"); } Begin: - printf("是否重新洗牌?(0/1)"); + printf("\n是否重新洗牌?(0/1)"); scanf("%d", &xipai_flag); if (xipai_flag == 1) @@ -53,8 +54,9 @@ Begin: for (int i = 0; i <= 53; i++) { l.firstInsert(v.get(i)); - std::cout << PU[l[0]]; - printf("\n"); + std::cout << PU[l[0]] << " "; + if (i % 2 != 0) + printf("\n"); } xipai_flag == 0; goto Begin; @@ -77,9 +79,9 @@ Begin: } } l.clear(); - // p1.sort(); - // p2.sort(); - // p3.sort(); + p1.sort(); + p2.sort(); + p3.sort(); int player = 0, opt = 0; List *pai; select: @@ -102,30 +104,31 @@ select: } while (1) { - printf("first:%d",(*pai).first()->data); - printf("1看牌2出牌3查看牌堆4结束\n"); + printf("剩余%d张牌\n", pai->getSize()); + printf("1看牌2出牌3查看牌堆4结束"); scanf("%d", &opt); switch (opt) { case 1: for (int i = 0; i < (*pai).getSize(); i++) { - printf("%d\n",(*pai).get(i)); + std::cout << i << ": " << PU[(*pai)[i]] << "\n"; } + break; case 2: printf("出哪张\n"); scanf("%d", &opt); // l.firstInsert((*pai)[opt]); - (*pai).remove(opt); - printf("first6:%d",(*pai).first()->data); - printf("剩余%d \n",pai->getSize()); - printf("%d",pai->get(0)); + + std::cout << "打出" << PU[(*pai).remove(opt)]; + printf("\n"); + break; case 3: - for (int i = 0; i succ = Old; T->pred = Old->pred; Old->pred = T; + T->pred->succ = T; _size++; return T; } @@ -42,6 +43,7 @@ Node List::succInsert(Node Old, int New) T->pred = Old; T->succ = Old->succ; Old->succ = T; + T->pred->succ = T; _size++; return T; } @@ -52,6 +54,7 @@ void List::firstInsert(int New) T->pred = header; T->succ = header->succ; header->succ = T; + T->succ->pred = T; _size++; } void List::lastInsert(int New) @@ -61,6 +64,7 @@ void List::lastInsert(int New) T->succ = trailer; T->pred = trailer->pred; trailer->pred = T; + T->pred->succ = T; _size++; } Node List::predInsertN(Node Old, Node New) @@ -70,6 +74,7 @@ Node List::predInsertN(Node Old, Node New) T->succ = Old; T->pred = Old->pred; Old->pred = T; + T->pred->succ = T; _size++; return T; } @@ -80,6 +85,7 @@ Node List::succInsertN(Node Old, Node New) T->pred = Old; T->succ = Old->succ; Old->succ = T; + T->pred->succ = T; _size++; return T; } @@ -91,6 +97,7 @@ Node List::firstInsertN(Node New) T->pred = header; T->succ = header->succ; header->succ = T; + T->pred->succ = T; _size++; return T; } @@ -101,6 +108,7 @@ Node List::lastInsertN(Node New) T->succ = trailer; T->pred = trailer->pred; trailer->pred = T; + T->pred->succ = T; _size++; return T; } @@ -130,51 +138,31 @@ int List::remove(int i) void List::removeN(Node i) { - printf("first3:%d\n",first()->data); - printf("last%d\n",last()->data); (i->pred)->succ = i->succ; - printf("first3.5:%d\n",first()->data); - printf("last%d\n",last()->data); (i->succ)->pred = i->pred; - printf("first4:%d\n",first()->data); - printf("last%d\n",last()->data); delete i; - printf("first5:%d\n",first()->data); _size--; } void List::sort() { - // int sorted_size=0; - // int unsorted_size=_size-1; - // for(int i=0;idata=T->data; - // T->data=max; + p = find(j); + if (max < p->data) + { + max = p->data; + maxN = p; + } - // sorted_size++; - // unsorted_size--; - // } - // Node maxN; - // Node p=trailer->pred; - // int max; - // for(int r=0;r<_size;r++) - // { - // for(int j=0;j<=r;j++) - // { - // printf("j%d\n",j); - // Node T =find(j); - // if(max>T->data) - // { - // max=T->data; - // maxN=T; - // } - // } - // predInsert(find(),) - // } + maxN->data = p->data; + p->data = max; + sorted++; + } } \ No newline at end of file