qq_24044961 2015-09-27 07:03 采纳率: 50%
浏览 3445

C++单循环链表约瑟夫问题

#include

using namespace std;

class Node
{
public:

Node *next;

char *name;
char *number;
char *sex;
char *age;
char *banji;
char *heal;
/*void input()
{
cin>>name;
cin>>number;
cin>>sex;
cin>>age;
cin>>banji;
cin>>heal;

}
void output()
{
    cout<<name<<" "<<number<<" "<<sex<<" "<<age<<" "<<banji<<" "<<heal<<endl;
}
*/

};
class linklist
{
public:
Node *head;
int n;

linklist()
{
    head=new Node ;
    head->next=NULL;
}
void input3()
{


    Node *t=head;
    Node *q;
    for(int i=0; i<n; i++)
    {
        q=new Node;
        t->next=q;

cin>>q->name>>q->number>>q->sex>>q->age>>q->banji>>q->age>>q->banji>>q->heal;
q->next=NULL;

        t=q;
    }
    q->next=head->next;

}

void johesu(linklist a)
{
    Node *p=a.head->next,*q=a.head->next;
    while(q&&q!=q->next)
    {
        int i=1;
              cin>>n;
        for( i=1; i<n; p=q,q=q->next)
            i++;
        cout<<q->name<<" "<<q->number<<" "<<q->sex<<" "<<q->age<<" "<<q->banji<<" "<<q->age<<" "<<q->banji<<" "<<q->heal<<endl;
        p->next=q->next;
        delete q;
        q=p->next;

    }
    a.head=NULL;

}

};
int main()
{
linklist a;

int m,n,i;
cin>>m;
a.n=m;
a.input3();
a.johesu(a);

}
请大神指出我的代码错误,本人新手,不喜勿喷。。我只是想不断改正自己的代码,发现自己的问题。谢谢!!!!

  • 写回答

2条回答 默认 最新

  • 山有木兮卿有意_ 2015-09-27 07:20
    关注

    代码太长,我还没看,首先说一下,你这include预编译命令后面什么都没有是几个意思?先把这个改了再说吧

    评论
  • 山有木兮卿有意_ 2015-09-27 07:41
    关注

    你这个johesu函数作用是将链表倒序输出吗?我理解为你是在倒序输出,而且在每次输出一个节点之后,将该节点析构。在倒序输出的时候,你的for循环中每次都循环n-1次,这是不对的,这样输出的结果是乱序的。你for循环每次应该循环的是上一次输出的时候的那个循环中的循环次数减1次。即,假如你共有5个节点。第一次你应该循环4次,输出第5个节点,然后将第5个节点析构,然后for循环3次,因为这次你总共只有4个节点了,然后输出、析构,然后循环2次,输出、析构。就这样依次类推

    评论

报告相同问题?

悬赏问题

  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)