精华内容
下载资源
问答
  • 约瑟夫环链表

    2015-01-10 13:21:32
    约瑟夫环链表
  • 2.2_约瑟夫环链表.cpp

    2019-10-28 19:12:29
    开始给定一个正整数 m,从第s个人按顺时针方向自1开始报数,报到m者出列,不再参加报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开始重新自1开始报数...实验要求: 采用链式存储结构实现,可以用循环链表
  • 约瑟夫环链表实现c++

    2010-01-13 23:39:32
    数据结构课程实验 约瑟夫环链表实现 完整的实验报告啊 希望大家受用
  • 约瑟夫环链表

    2020-03-07 23:49:12
    注意while 这个地方,如果直接用if要多循环好多次,但是用while直到不为0省去好多功夫 #include<stdio.h> struct person{ int num; int next; }; int main(){ int n,m=0,i,k=0; ......

    注意while 这个地方,如果直接用if要多循环好多次,但是用while直到不为0省去好多功夫

    #include<stdio.h>
    struct person{
    	int num;
    	int next;
    }; 
    int main(){
    	int n,m=0,i,k=0;
    	scanf("%d",&n);
    	struct person a[n];
    	for(i=0;i<n;i++){
    		a[i].num=i+1;
    		a[i].next=i+1;
    	}
    	a[n-1].next=0;
    	i=0;
    	while(m<n){
    		if(k!=3){
    			while(a[i].num==0) i=a[i].next;
    			k++;
    		}
    		if(k==3){
    			printf("%d ",a[i].num);
    			a[i].num=0;
    			a[i-1].next=a[i].next;
    			m++;
    			k=0;
    		}
    		i=a[i].next;
    	}
    }

    如果要标明最后一个出来的

    while(m<n-1){
    		if(k!=3){
    			while(a[i].num==0) i=a[i].next;
    			k++;
    		}
    		if(k==3){
    			printf("%d ",a[i].num);
    			a[i].num=0;
    			a[i-1].next=a[i].next;
    			m++;
    			k=0;
    		}
    		i=a[i].next;
    	}
    	while(a[i].num==0) i=a[i].next;
    	printf("\n");
    	printf("The last person is %d\n",a[i].num);

     

    展开全文
  • 约瑟夫环链表实现

    2018-10-19 11:10:52
    写的蛮繁琐的,而且中间还出现了些问题 #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cstring&gt; using namespace std; typedef struct node ...typedef ListN...

    写的蛮繁琐的,而且中间还出现了些问题

    #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;
    }
    
    展开全文
  • 学习严蔚敏的数据结构课程时老师布置的实践作业,约瑟夫环,用链表实现,也可用顺序表实现,但是因为该环用顺序表实现时也无法实现随机访问,因此本人认为约瑟夫环的顺序表实现方法没有什么价值!在VC6.0下编译通过...
  • C语言约瑟夫环链表

    2016-05-19 20:01:30
    //给无头结点链表添加辅助头结点,但循环链表的尾巴仍指向第一个元素点,而不是头结点  struct link * q; p->next = head; head = p; while(p->next != p) //只剩下一个节点时,即为结果 { for(i...
    #include <stdio.h>
    #include <windows.h>
    #include <string.h>
    struct link * creat1(int n);
    void out(struct link * head);
    void free_(struct link * head);
    struct link * jsf(struct link * head,int m);


    struct link
    {
    int data;
    struct link * next;
    };


    void main()
    {
        struct link * head;
    struct link * p;
    int n,m;
    printf("input n , m:");  //读入个数与约定删除数
    scanf("%d %d",&n,&m);
    head = creat1(n);
    out(head);
    p = jsf(head,m);
    printf("\nlast: %d \n",p->data);
    free(p);


    }


    struct link * jsf(struct link * head,int m)
    {
        int i;
    struct link * p = malloc(sizeof(struct link ));    //给无头结点链表添加辅助头结点,但循环链表的尾巴仍指向第一个元素点,而不是头结点
        struct link * q;
    p->next = head;
    head = p;
    while(p->next != p) //只剩下一个节点时,即为结果
    {
    for(i = 0; i < m; i++)  //数到M删除一次
    {
    q = p;
    p = p->next;
    }
    q->next = p->next;
    free(p);
    p = q;
    }
    free(head);//删除头结点
        return p;
    }


    struct link * creat1(int n)    //创建循环链表
    {
        struct link * head;
        struct link * p;
    struct link * q;
        int i = 1;
    head = (struct link *)malloc(sizeof(struct link));
    p = q = (struct link *)malloc(sizeof(struct link));
        p->data = i;
    head->next=p;
    while (i < n)
    {
    i++;
    p = (struct link *)malloc(sizeof(struct link));
    p->data = i;
    q->next = p;
    q = p;
    }
    p = head->next;   //删除头结点。使之为无头结点链表,多此一举,懒得改
        q->next = p;
    free(head);
    return p;
    }


    void out(struct link * head)  //输出无头结点链表
    {
        struct link * p = head->next;
        printf("%d ",head->data);
    while(p != head)
    {
    printf("%d ",p->data);
    p = p->next;
    }
    putchar(10);
    }


    void free_(struct link * head)   //删除无头结点链表,未使用
    {
        struct link * p = head->next;
    struct link * q = head;
    while(head != p)
    {
    q = p->next;
            free(p);
    p = q;
    }
        free(head);
    }
    展开全文
  • 这是约瑟夫环的源代码。是用VS2005编写的。
  • C 约瑟夫环 链表

    2013-03-27 08:10:00
    #include <stdio.h> #include <string.h> #include <stdlib.h> //stdlib.h 包括了malloc.h #define N 17 typedef struct Node{ int data; struct Node * next;...Node...
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>  //stdlib.h 包括了malloc.h
    
    #define N 17
    
    typedef struct Node{
        int data;
        struct Node * next;
    }Node;
    
    Node * add21Node(Node * first);
    Node * delNode(Node * start);
    int main(){
        Node *first=(Node *)malloc(sizeof(Node));
        first->data=1;
        first->next=NULL;
    
    
        Node *last=add21Node(first);
        last->next=first;
        int i=0;
    
        //ok
        /*
        Node *p=first;
        while(i<100){
            i++;
            printf("%d",p->data);
            p=p->next;
        }*/
        Node *p=first;
        while(i<9){
            p=delNode(p);
            i++;
        }
        for(i=0;i<N-8;i++){
            printf("%d,",p->data);
            p=p->next;
        }
        
    
    }
    
    Node * add21Node(Node * first){
        Node *p=first;
        int i=1;
        while(i<=21){
            i++;//while循环千万不要忘记i++
            Node * newNode=(Node *)malloc(sizeof(Node));
            newNode->data=i;
            newNode->next=NULL;
            p->next=newNode;
    
            p=newNode;
        }
        return p;
    
    }
    
    
    /**
    删除指定位置的节点 返回下一个节点
    */
    Node * delNode(Node * start){
        Node *p=start;
        int i=1;
        while(i<N-1){
            i++;
            p=p->next;
        }//来到了要删除节点的前一个节点
        Node *del=p->next;
        printf("\n-%d--\n",del->data);
        //free(del);
        p->next=p->next->next;
        free(del);//free语句不能放在上面那句话前面
        
        return p->next->next;
    }

     

    转载于:https://www.cnblogs.com/cart55free99/archive/2013/03/27/2983860.html

    展开全文
  • //创建单向循环链表 }; void CircleList::CreateCircleList(int n) { if(n) { cout ; } else { length = n; int i = 0; Node *p,*q; p = head; p ->data = 1; i = i + 1; int a = 2; while(i...
  • 约瑟夫环链表约瑟夫环链表约瑟夫环链表约瑟夫环链表约瑟夫环链表)源码!
  • 约瑟夫环 动态链表 处理 C
  • 约瑟夫环双向链表

    2018-04-15 21:21:26
    约瑟夫环双向链表,略微麻烦的一部分 #include &lt;malloc.h&gt; /*该约瑟夫环使用的是循环链表*/ /*构建结构体*/ typedef struct Node{ int Num; struct Node *next; struct Node *pre; }JoseNode, *...
  • 约瑟夫环链表实现

    2016-08-08 19:22:56
    约瑟夫环链表实现时,约瑟夫环充分的使用了单链表的查询和删除,约瑟夫环就是一个循环链表,在一段距离内删除一个结点,直到全部删除为止。 //约瑟夫环 #include #include using namespace std; struct node ...
  • 约瑟夫环链表解法

    2020-09-19 12:30:32
    约瑟夫环-链表解法 之前遇到一个面试题,大意是:电梯里一拥而上一群人,导致电梯超重,于是大家约定,站成一圈,任选一人开始报数,数到3的那个人出电梯,圈内的下一个人重新从1开始报数,数到3的人再出电梯,一直...
  • 约瑟夫环链表表示

    2014-03-02 13:14:22
    链表来实现约瑟夫环的构造,并且密码是相同的,动态表示
  • 约瑟夫环 C++ 链表

    2009-10-10 08:39:27
    这里有两个资源,一个简易版的,一个扩展版(链表的增加、修改、查询、删除),还有论文(一个是约瑟夫环,一个是系数矩阵)。
  • 链表实现约瑟夫环,可以直接执行,编程语言为C++,适合初学者。
  • 数据结构 约瑟夫环链表实现 可以用链表的方法实现对约瑟夫环的具体操作
  • C++实现约瑟夫环链表实现 C++源代码 .cpp
  • 约瑟夫环 链表 这个容易实现,初学者容易看懂。。。大一写的,风格是汉语拼音。。。
  • 约瑟夫环链表解决

    2021-06-10 21:25:37
    约瑟夫环` #include <iostream> using namespace std; typedef struct Node { int num; struct Node* next; }Node; Node* createList(int n) { Node* p1 = new Node; p1->num = 1; Node* pre = p1; ...
  • 约瑟夫环循环链表

    2017-11-20 23:14:37
    约瑟夫环问题的一种描述是:编号为1,2,3,n的n个人按顺时针围坐一圈,每人持有一个密码(正整数),一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的人出列,将...
  • 约瑟夫环,这是我用链表编的。与顺序表不同,挺好懂得。
  • 约瑟夫环链表实现(C++) 采用链表方式解决问题,代码简单,书写格式规范,有相应注释以及测试小模块。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,799
精华内容 1,119
关键字:

约瑟夫环链表