基于visual Studio2013解决C语言竞赛题之1049抓牌排序
题目
解决代码及点评
/*
功能:插入排序。许多玩牌的人是以这样的方式来对他们手中的牌进行排序的:
设手中原有3张牌已排好序,抓1张新牌,若这张新牌的次序在原来的第2张牌之后,第
3张牌之前,那么就把这张新牌放在第3张牌的位置上,原来的第3张改为第4张,
然后再抓新牌。按着这个算法,编写一个排序程序。
注:开始一张牌也没有,从第一张牌开始抓起。 时间:23:34 2013/10/24
*/ #include<stdio.h>
#include<stdlib.h> struct card
{
int num;
struct card *pNext;
}; typedef struct card CARD; CARD *initList(int); //链表初始化声明,第一张牌
void insertList(CARD *p,int n); //在第i个元素后插入
void showAll(CARD *p); void main()
{
CARD *pHead=initList(2); //头结点创建,next=Null insertList(pHead,4);
insertList(pHead,3);
insertList(pHead,1);
showAll(pHead);
system("pause");
} void showAll(CARD *p)
{
do
{
printf("%d \n",p->num);
} while((p->pNext!=NULL) && (p=p->pNext));
} void insertList(CARD *p,int n)
{
CARD *pNew=(CARD *)malloc(sizeof(CARD)); //分配新结点
if(pNew==NULL)return;
if(n<p->num) //判断n是否小于头结点 如果小于,将头结点的值与n交换
{
int temp=p->num;
p->num=n;
n=temp;
}
CARD *Prior=p; //用来保存前结点
while(n>p->num && p->pNext!=NULL) //当n大于当前结点时,指针向后移,知道小于当前结点或next为NULL时终止
{
Prior=p; //循环结束后,为当前结点的前结点
p=p->pNext;
}
if(n<p->num) //当n<小于当前结点,则在当前结点前插入n
{
Prior->pNext=pNew;
pNew->pNext=p;
pNew->num=n;
}
if(p->pNext==NULL && n>p->num) //假设牌码最大,则在链表尾部插入
{
p->pNext=pNew;
pNew->pNext=NULL;
pNew->num=n;
} }
CARD *initList(int n)
{
CARD *p=(CARD *)malloc(sizeof(CARD));
if(p==NULL)return NULL; //分配失败返回空
p->num=n;
p->pNext=NULL;
return p;
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn
基于visual Studio2013解决C语言竞赛题之1049抓牌排序的更多相关文章
- 基于visual Studio2013解决C语言竞赛题之1054抽牌游戏
题目 解决代码及点评 /************************************************************************/ /* 54 ...
- 基于visual Studio2013解决C语言竞赛题之1053洗牌
题目 解决代码及点评 /* 功能:洗扑克牌.将54张牌分别编号为1,2,-,54号,并放在数组M中. 洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换: ...
- 基于visual Studio2013解决C语言竞赛题之1065二维排序
题目 解决代码及点评 /* 功能:二维数组排序.设有4×5的数组M,通过排序使 M[1][1]≤M[1][2]≤...≤M[1][5]≤M[2][1]≤M[2][2]≤...≤ ...
- 基于visual Studio2013解决C语言竞赛题之1067间隔排序
题目 解决代码及点评 /* 功能:间隔元素排序.用随机函数产生25个[25,75]之间的整数, 把它送到一维数组M中. 要求对M[I],M[I+J],M[I+2*J],-这些元 ...
- 基于visual Studio2013解决C语言竞赛题之0401阶乘
题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...
- 基于visual Studio2013解决C语言竞赛题之0205位数求和
题目
- 基于visual Studio2013解决C语言竞赛题之0201温度转换
题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float ...
- 基于visual Studio2013解决C语言竞赛题之0409 100以内素数
题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...
- 基于visual Studio2013解决C语言竞赛题之0408素数
题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...
随机推荐
- qt qml 利用xmlhttprequest 调用有赞api
最近朋友在有赞商城上面开了一个店铺,因为有实体店,一般卖商品后送货上门,但是打票时候老是人工用world文档人工复制黏贴订单打印小票, 所以就找我帮忙做一个软件专门打印小票的,就研究起来调用有赞第三方 ...
- 实用推荐:12款Linux系统恢复工具
12款Linux系统恢复工具 电脑死机,系统崩溃,总会给电脑使用者带来一定的损失.你是否不小心删除你的纪念图片?安装新系统时候,擦除了分区表?无法读取旧CD里面的数据?别急嘛-我们将会给您推荐一些免费 ...
- Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,
Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...
- cocos2dx进阶学习之CCAction
CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...
- cocos2dx进阶学习之场景切换
背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...
- FMDB的基本应用
FMDB简介 iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较频繁.于是,就出现了一系列将AQLite API进行封装的库,例如FMDB.PlausibleDa ...
- 复习知识点:XML解析数据,JOSN解析数据,GET请求数据,POST请求数据
GDataXMLDocument-XML解析 #pragma mark - ======== Dom XML解析 - (IBAction)domParserActionXML_Document:(id ...
- 2013 ACM/ICPC Asia Regional Chengdu Online---1003
哈哈哈 #include <iostream> #include <cstring> #include <string> #include <cstdio&g ...
- android取得所在位置的经纬度
android提供了LocationManager来取得位置,用LocationListener来监听位置的变化 先做一些初始化工作: /** latitude and longitude of cu ...
- 内联函数 inline
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...