.h
/*-----------框架-----------*//*
剩下的数牌counter次
若!0
则跳过P++;
i==counter
则data=counter;
break;
i++;
P->data=counter;
counter++;
总循环到counter==13;
//-----------框架-----------*/
#ifndef _Distribute_Cards_
#define _Distribute_Cards_
struct cardNode;
typedef struct cardNode*cardPtr;
typedef cardPtr cardPos;
typedef cardPtr _card;
class _distributeCards{
int cardsCouter; //----计数器,记录当前调整牌值
_card cardHead; //----表头
void
fatalError(const char*),//----指针创建失败自动退出
makeCards(), //----创建卡牌链表,表头后一格循环表
initCardHead(), //----data弄成-1
distributeC(), //----调整牌序
initRsultPrint(), //----初始化置0后打印
resultPrint();
public:
_distributeCards();
~_distributeCards();
};
#endif // !_Distribute_Cards_
.cpp
#include"distributeCards.h"
#include<iostream>
#include<conio.h>
using namespace std;
struct cardNode{
int Data;
cardPos nextCardNode;
};
_distributeCards::_distributeCards(){
initCardHead();
makeCards();
initRsultPrint();
distributeC();
resultPrint();
}
void _distributeCards::initCardHead(){
cardHead = new cardNode;
if (!cardHead)
fatalError("new cardHead Error!");
cardHead->Data = -1;
cardHead->nextCardNode = NULL;
}
void _distributeCards::fatalError(const char*ch){
cout << ch << endl;
_getch();
exit(1);
}
void _distributeCards::makeCards(){
cardPtr tempO, tempN;
tempO = tempN = cardHead;
for (int i = 0; i != 13; i++){
tempN = new cardNode;
if (!tempN)
fatalError("new Cards Error!");
tempN->Data = 0;
tempN->nextCardNode = NULL;
tempO->nextCardNode = tempN;
tempO = tempN;
}
tempN->nextCardNode = cardHead->nextCardNode;//----表尾指向头的下一张卡牌(即第一张卡片)
}
void _distributeCards::initRsultPrint(){
cardPtr P = cardHead;
cout << "初始化测试结果:" << endl;
for (int i = 0; i != 28; i++){
cout << P->Data << ",";
P = P->nextCardNode;
}
cout << endl;
}
void _distributeCards::distributeC(){
cardPtr P = cardHead;
cardsCouter = 1;
do
{
for (int i = 0; i <cardsCouter; i++)
{
P = P->nextCardNode;
while (P->Data)
P = P->nextCardNode;
}
P->Data = cardsCouter;
cardsCouter++;
} while (cardsCouter <= 13);
}
void _distributeCards::resultPrint(){
cardPtr P = cardHead->nextCardNode;
cout << "结果输出:" << endl;
for (int i = 0; i != 13; i++){
cout << P->Data << ",";
P = P->nextCardNode;
}
}
_distributeCards::~_distributeCards(){
cardPtr tempO, tempN;
tempO = tempN = cardHead;
for (int i = 0; i != 14;i++){
tempN = tempO->nextCardNode;
delete tempO; tempO = NULL;
tempO = tempN;
}
cout << "删除链表成功但~不成功," << endl;//----错误待验证
}
main.cpp
#include<conio.h>
#include<iostream>
#include"distributeCards.h"
using namespace std;
int main(){
_distributeCards C;
delete &C;
//cout << "~成功," << endl;
return _getch();
}