| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 405 人关注过本帖
标题:求猴王问题,删除已报数的结点出问题了,求帮忙!!
只看楼主 加入收藏
美珊
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-10-4
结帖率:60%
收藏
 问题点数:0 回复次数:2 
求猴王问题,删除已报数的结点出问题了,求帮忙!!
#include<iostream.h>

typedef char ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LinkList;



void InitList(LinkList *&L)
{
    L=new LinkList;
    L->next=L;
}



////////////////////////////////////////////
//1)尾插法建表
void CreateListR(LinkList *&L,ElemType a[],int n)
{
    LinkList *s,*r;
    int i;
    L=new LinkList;
    r=L;

    for(i=0;i<n;i++)
    {
        s=new LinkList;
        s->data=a[i];
        r->next=s;
        r=s;
    }
   
    r->next=L;
}



////////////////////////////////////////////
//2)销毁线性表
void DestroyList(LinkList *&L)
{
    LinkList *p=L,*q=p->next;
    while(q!=L)
    {
        delete p;
        p=q;
        q=p->next;
    }

    delete p;
}


////////////////////////////////////////////
//3)删除数据元素
int ListDelete(LinkList *&L,int i,ElemType &e)
{
    int j=0;
    LinkList *p=L,*q;

    while(j<i-1 && p->next!=L)
    {
        j++;
        p=p->next;
    }

    if(p==L)
        return 0;
    else
    {
        q=p->next;
        if(q==L) return 0;
        e=q->data;
        p->next=q->next;
        delete q;
        return 1;
    }
}



////////////////////////////////////////////
//4)选择猴王
void Select(LinkList *L,int n,int k,int m)
{
    LinkList *p=L,*q,*r;                        //定义3个指针,p指针指向头结点
    ElemType e;                        
    int i,j;

    for(i=0;i<k;i++)
        p=p->next;                              //p指针指向起始报数结点

    q=p->next;                                  //q指针指向起始报数结点的下一结点
    delete p;                                   //删除报到的结点
    cout<<"猴子"<<k<<"出列"<<endl;

    while(q!=L)                                 //当q指针指向头结点
    {
        for(i=0;i<m-1;i++)                      //执行报数m-1次的循环
        {
            q=q->next;                          //q指针指向下一结点
            if(q==L)                           
                q=q->next;
            j=q->data;
        }

        r=q;
        q=q->next;
        delete r;
        cout<<"猴子"<<j<<"出列"<<endl;
    }
}

////////////////////////////////////////////
//以下为主函数代码
void main()
{
    LinkList *y;
    ElemType e;
    ElemType a[10]={1,2,3,4,5,6,7,8,9,10};
    InitList(y);
    cout<<"1)初始化单链表完毕!"<<endl;
    cout<<endl;

    CreateListR(y,a,10);
    cout<<"2)已经创建了一个单链表!"<<endl;
    cout<<endl;

    cout<<"3)求猴王:"<<endl;
    Select(y,10,3,3);
    DestroyList(y);
}
搜索更多相关主题的帖子: include 猴王 
2013-10-07 21:46
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:0 
作业题。。。对于理解C++这门语言毫无帮助,建议去算法板块问
2013-10-08 07:04
美珊
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-10-4
收藏
得分:0 
哦,谢谢你,早上我解决该问题了,删除结点和设置循环条件过程出错了。
2013-10-08 09:33
快速回复:求猴王问题,删除已报数的结点出问题了,求帮忙!!
数据加载中...
 
   



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

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