数据结构:循环单向链表——约瑟夫环
来源:互联网 发布:什么是淘宝类目搜索 编辑:程序博客网 时间:2024/05/16 17:40
数据结构要求写一个用单向循环链表存储的约瑟夫环,原题如下:编号1,2,3......,n的n个同学按顺指针方向围坐一圈,每人持有一个密码(正整数),开始选一个上报数m,从第一个人开始报数,直到报到m,然后这个人出列,再将这个人的密码当成新的m,并从他的下一位同学开始从一数。直到全部出列。
然后自己就苦逼的想啊想。
代码如下:
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK 1#define ERROR 0 #define OVERFLOW -2typedef int status;typedef int Number;typedef int ElemType;typedef struct Node{ElemType data;Number num;struct Node *next;}LNode, *LinkList; //Linklist 头结点 wsm要带* ????????????????????//----------------------创建循环链表-------------------status InitList(LinkList &L, ElemType n)//建立循环链表 { LNode *p,*q;int i;L = NULL;for(i = n;i >= 1;i --){p =(LNode *)malloc(sizeof(LNode));if(p == NULL)return OVERFLOW;printf("请输入第%d个人的密码:",i);scanf("%d",&p ->data);p->num = i;p->next = L;L = p;if (i == n)q = p;}q->next = L;} //------------------------删除元素-----------------------status ListDelete(LinkList &L,int i,ElemType &e){int j = 1;LNode *q, *p = L;while(j < i - 1){p = p->next;++j;}if(!p->next||j>i - 1)return ERROR;q = p->next;p->next = q->next;printf("%d",q->num);e = q->data;free(q);if(e != 1)L = p->next;elseL = p;return OK;}//——----------------------考虑是1的这种情况------------status ListDelete1(LinkList &L,ElemType &e){LNode *q, *p = L;if(!p->next)return ERROR;q = p->next;p->next = q->next;printf("%d",q->num);e = q->data;free(q);L = p->next;return OK;}int main(){LinkList L;int n,m,i;LNode e;printf("请输入围成圈的总人数n:");scanf("%d",&n);InitList(L,n);printf("请输入报数上限值m:");scanf("%d",&m);printf("输出顺序如下:");for(i = 0;i < n;i ++){if(m != 1)ListDelete(L,m,m);else ListDelete1(L,m);}return OK;}
可以直接试一下: 数据 n = 7 然后密码顺序:4,8,4,2,7,1,3 m = 20 则若运行结果为:6,1,4,7,2,3,5 就正确。
总结:1.自己的指针这一块非常薄弱。一定要在学习学习。
2.要养成多调试的习惯。像高鑫学习。高鑫真的太厉害了。我纠结很久的问题。他轻松解决。佩服。
- 数据结构:循环单向链表——约瑟夫环
- 单向循环链表—约瑟夫问题
- 单向循环链表--约瑟夫环
- 约瑟夫环---单向循环链表
- 单向循环链表求解约瑟夫环
- JavaScript数据结构之单向循环链表应用-约瑟夫问题
- c语言数据结构之单向循环链表约瑟夫问题
- 数据结构——单向循环链表
- 数据结构练习题 约瑟夫环—用循环链表实现
- java单向循环链表实现约瑟夫环
- 用单向循环链表实现约瑟夫环
- 单向循环链表实现约瑟夫问题
- 数据结构——循环链表、仅设尾指针的循环链表、约瑟夫环
- 数据结构(C++)——单向循环链表
- C++数据结构与算法——单向循环链表
- 数据结构系列之链表——循环链表(约瑟夫环)
- 数据结构之线性表——约瑟夫环问题(循环链表的应用)
- 循环链表—约瑟夫环问题
- 常用的android提示对话框
- javascript加强 遍历所有文档节点
- 关于container_of等宏的整理
- hdu 2955
- 50个必备的实用jQuery代码段
- 数据结构:循环单向链表——约瑟夫环
- session案例——防止重复提交
- android 设定activity的进入和退出效果
- 我的求职历程-----求职总结
- iPhone Memory Management Tips
- 问题,等待求解
- ubuntu安装vim编辑工具
- Java网络编程
- 华为的冬天----任正非