</pre><pre code_snippet_id="293184" snippet_file_name="blog_20140415_1_945788" name="code" class="cpp">/*单链表 重新 按m分配*/
#include <iostream>
using namespace std;
typedef struct Node{
int data;
Node * next;
};
void change(Node **head,Node **now,int m){
Node *cur = *head;
Node *p = *now;
Node *p1 = p;
while(cur->next != cur){
for(int i=0;i<m;i++){
cur=cur->next;
i++;
}
swap(cur->data , cur->next->data);
p = cur->next;
cur->next = cur->next->next;
p = p->next;
cout << p->data;
}
if(cur->next == cur){
cur->next = p->next;
p->next =cur;
p->next =p1;
*now = p1;
}
}
void reorder(Node **head , int m){
Node **q = head;
change(head,q,m);
head = q;
}
void main(){
Node *p = (Node*)malloc(sizeof(Node));
p->data = 0;
Node **head = &p;
Node *f= p;
for(int i=1;i<10;i++){
Node *t= (Node*)malloc(sizeof(Node));
t->data = i;
t->next = p;
f->next = t;
f = t;
}
cout << (*head)->data;
reorder(head,3);
Node **q = head;
int count =0;
while((*q)!= NULL && count <=9){
cout << (*q)->data;
*q = (*q)->next;
count ++;
}
}
约瑟夫环
最新推荐文章于 2024-11-14 15:54:34 发布