不懂你是谁
【提问】【C++】循环链表(不含空节点)怎么写?

如果单用尾指针,应该怎么建立链表?

绯色の人形
没事又进来了
展开Biu

没事又进来了==原来是约瑟夫问题#7077!

[查看全文]
yeahhhhh
越新的节点越靠近
展开Biu

Josephus::Josephus(int n)

{

Node*p;

first=new Node;

first->num=1;

first->next=first;

for(int i=2;i<=n;i++){

p=new Node;

p->next=first->next;

first->next=p;

p->num=i;

}

}

越新的节点越靠近head总觉的有点奇怪= =

[查看全文]
不懂你是谁
尾指针指向头指针就
展开Biu

绯色の人形 发表于 2012-11-25 13:39

尾指针指向头指针就OK了

是的 当时就是没注意到这一步额@105-

[查看全文]
绯色の人形
尾指针指向头指针就
展开Biu

尾指针指向头指针就OK了#7077!

[查看全文]
不懂你是谁
风音洛洛
展开Biu

风音洛洛 发表于 2012-11-24 07:31

话说我们最近的上机也是鼓捣这些东西。。。

我们老师说单链表学好了,数据结构就不难了。

[查看全文]
不懂你是谁
这个我搞起来了
展开Biu

这个我搞起来了、下面是完整的代码。

#include *本站禁止HTML标签噢*

using namespace std;

struct Node{

int num;//编号

Node*next;

};

class Josephus{

friend void printff(Josephus a,int k,int m);

public:

Josephus();

Josephus(int n);

// void print();

int getnumber();

private:

Node*first;

int Number;

};

Josephus::Josephus(){

first=NULL;

first->next=first;

Number=0;

}

Josephus::Josephus(int n)

{

Number=n;

Node*p;

first=new Node;

first->num=1;

first->next=first;

for(int i=n;i>=2;i--){

p=new Node;

p->next=first->next;

first->next=p;

p->num=i;

}

}

int Josephus::getnumber(){

return Number;

}

//void Josephus::print(){

// Node*p;

// p=first;

// for(int i=1;i<=Number;i++){

// cout<<p->num;

// p=p->next;

// }

//}

void printff(Josephus a,int k,int m){

Node*p;

Node*r;

p=a.first;

cout<<"输出顺序为:"<<endl;

if(k==1)

{

r=p;

while(r->num!=a.Number)

r=r->next;

for(int i=0;i<a.Number;i++){

p=r->next;

for(int j=1;j<m;j++){

r=p;p=p->next;

}

cout<<p->num;

r->next=p->next;

delete p;

}

}

else{

while(p->num!=k-1)p=p->next;

r=p;p=p->next;

for(int i=0;i<a.Number;i++){

p=r->next;

for(int j=1;j<m;j++){

r=p;p=p->next;

}

cout<<p->num;

r->next=p->next;

delete p;

}

}

}

int main(){

Josephus A(9);

// A.print();

printff(A,1,5);

return 0;

}

[查看全文]
风音洛洛
话说我们最近的上机也是鼓捣这些东西
展开Biu

话说我们最近的上机也是鼓捣这些东西。。。

[查看全文]
天涯明月稻
后面才能用
展开Biu

应该是

*p=new Node;

这样,后面才能用p->来访问里面的内容吧

[查看全文]