| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:纸牌 链表问题(数组能做,我想试试链表 已崩。。。)
只看楼主 加入收藏
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
结帖率:100%
收藏
 问题点数:0 回复次数:9 
纸牌 链表问题(数组能做,我想试试链表 已崩。。。)
有两副扑克牌,牌的顺序都是:大王、小王、黑 桃、红桃、方块、梅花四种花色排列,其中每种花色 又按A,2,3,……J,Q,K的顺序排列,有个人把这两副 扑克牌上下叠放在一起,然后从上到下把单数张的丢 掉,把双数张放在最底层,直到剩下最后一张牌,那 么这张牌是什么?

#include <stdio.h>
#include <stdlib.h>
 
typedef struct LNode
{
    int num;
    int    color;
    struct LNode *next;
    struct LNode *pre;   
}LNode, *LinkList;


//删除
void delete_L(LinkList &L, int i)
{
        LinkList p = L;
        int j = 0;
        
        for(j=0; j<i; j++)
            p = p->next;
        
        p->pre->next = p->next;
        p->next->pre = p->pre;
        free(p);        
}

//利用文件创建链表(也可以使用for循环建立)
void create_L(LinkList &L)
{
    FILE *fp = fopen("create.txt","r");
    LinkList p = L;
/*    LinkList head=(LinkList)malloc(sizeof(LNode));
    head->next = head;
    head->pre = head;
    LinkList p = head;*/
    while(!feof(fp))
    {
        LNode *newbase = (LinkList)malloc(sizeof(LNode));
        //memset(newbase, 0, sizeof(newbase));
        //fread(newbase, sizeof(LNode), 1, fp);
        fscanf(fp, "%d", &newbase->color);
        fscanf(fp, "%d", &newbase->num);
        if(feof(fp))
        {
            p->next = NULL;
            break;
        }
        
        newbase->pre = p->pre;
        p->pre->next = newbase;
        newbase->next = p;
        p->pre = newbase;
    }
   
}

//将双数张放在链尾
void change_L(LinkList &L, int i)
{   
/*    LinkList p = L->next;
    LinkList q = p->next;
   
    L->pre->next = p;
    q->pre = p->pre;
    p->pre = L->pre;
    p->next = L;
*/

    L = L->next;   
}

//按题目要求排序
void paixu_L(LinkList &L, int &i, int &j)
{
    LinkList p=L;
    int n = 0;
    while(!(p->pre == p->next))
    {
        if(n=0)
        {
            delete_L(L, p->next->num);
            n=n+1;
        }
        else
        {
            change_L(L, p->next->num);
            n=n-1;
        }
    }
    i = p->next->num;
    j = p->next->color;
}


int main()
{
    int i, j = 0;
    LinkList L;
    printf("i取值1-13代表A-K    j取值1-4分别代表黑桃、红桃、方片、梅花\n大王(i,j)=(40,40)    小王(i,j)=(30,30)\n");
    printf("请按下列i,j值找出对应纸牌\n");
    create_L(L);
    paixu_L(L, i, j);
   
    printf("i=%d, j=%d", i, j);
}
搜索更多相关主题的帖子: include 大王 扑克牌 color 
2015-12-07 23:11
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
顶顶顶
2015-12-07 23:11
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
顶顶顶
2015-12-07 23:11
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
呼叫版主
2015-12-07 23:12
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
救命啊
2015-12-07 23:12
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
upupup
2015-12-07 23:14
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
upupup
2015-12-07 23:14
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
这是文件内容
40 40 30 30 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 3 1 3 2 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 3 13 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 40 40 30 30 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 3 1 3 2 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 3 13 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13
2015-12-07 23:18
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
40 40为大王 30 30为小王
结构体中的num取值1-13 代表A-K
color代表花色 取值1-4 分别代表 黑桃、红桃、方片、梅花
2015-12-07 23:20
hwd96
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2015-9-6
收藏
得分:0 
我胡汉三又回来了
2015-12-07 23:20
快速回复:纸牌 链表问题(数组能做,我想试试链表 已崩。。。)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032505 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved