1. 程式人生 > >約瑟夫環連結串列實現

約瑟夫環連結串列實現

寫的蠻繁瑣的,而且中間還出現了些問題

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
typedef struct  node
{
    int data;
    struct node *next;
}ListNode;
typedef ListNode *LinkList;

LinkList init(int n,LinkList R)
{
    ListNode *p,*q;
    int i;
    R=q=new ListNode;
for(int i=1;i<n;i++) { p=new ListNode; q->data=i; q->next=p; q=q->next; } q->data=n; q->next=R; return R; } LinkList DeleteDeath(int n,int k,LinkList R) { ListNode *q,*p; p=R; if(k==1) { for
(int i=1;i<=n;i++) { cout<<p->data<<" "; p=p->next; } } else for(int i=1;i<=n;i++) { for(int j=1;j<k-1;j++) p=p->next; q=p->next; p->next=q->next; cout<<
q->data<<" "; p=p->next; } cout<<endl; return R; } int main() { LinkList R,t; int n,m; //總人數n 報數上線 m cin>>n>>m; R=init(n,R); DeleteDeath(n,m,R); return 0; }