魔术师发牌

.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();
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pq分区魔术师是一个非常有才华的魔术师,他以独特的pq分区技巧而闻名于世。pq分区是一种将物体分割为两个部分的魔术技巧,其中一个部分可以自由地移动,而另一个部分则似乎消失了。这个魔术师在表演时会使用特殊的道具,在观众面前展示出惊人的魔术效果。 魔术师开始表演时,他会展示一个看起来普通的鸽子笼。观众们可能会怀疑,这只是一个普通的道具,并没有什么特别之处。然而,当魔术师开始使用pq分区技巧时,观众们会被他的技术深深吸引。 魔术师先将鸽子笼放在一个透明的箱子中,并且在观众面前展示鸽子笼是完整的。然后,他突然将鸽子笼分成两个部分:一个是鸟巢,另一个是笼子。观众们会惊讶地发现,在分割后,鸟巢可以自由地移动,而笼子部分似乎消失了。 接下来,魔术师会展示不同的变化。他可以将鸟巢和笼子重新组合在一起,然后再次将它们分割。每一次,观众们都会被他巧妙的手法所吸引,感叹他的技巧之高超。 看似不可能的事情在魔术师的手中变得可能,观众们为他的表演着迷。他的pq分区技巧展示了他对细节的精确掌控和巧妙的手法,使得他成为了一个备受瞩目的魔术师。 总之,pq分区魔术师pojieban以其独特的技巧和高超的手法,在魔术表演中引起了广大观众的兴趣和好评。他的表演令人难以置信,并让人不禁丧失了对现实的理性思考。这是一位令人赞叹的魔术师,他的表演给人们带来了无尽的惊喜和欢乐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值