最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
约瑟夫环问题
时间:2022-07-02 10:56:30 编辑:袖梨 来源:一聚教程网
模 块 划 分
(1)带头结点的单循环链表抽象数据类型sclinlist,其中包括的基本操作函数有:初始化操作函数,插入一个结点操作函数,删除一个几结点操作函数,取一个结点数据操作函数和判表是否为非空操作函数。
(2) void sclldeleteafter(sclnode *p),其功能是删除带头结点的单循环链表中指针p所指结点的下一个结点。
(3) void jesephring(sclnode *head,int m),其功能是对带头结点的单循环链表head,
以m为初始报数上限值实现问题要求。
(4) void main(),主函数,其功能是给出测试数据值,建立测试数据值的带头结点单循环链表,调用jesering()函数实现问题要求。
#include
#include
#define null 0
//数据类型datatype定义如下:
typedef struct
{
int number;
int cipher;
}datatype;
//带头结点单循环链表结点的结构体定义如下:
typedef struct node
{
datatype data;
struct node *next;
}sclnode;
//初始化
void scllinitiate(sclnode * *head)
{ if((*head=(sclnode*)malloc(sizeof(sclnode)))==null)exit(1);
(*head)->next=*head;
}
//插入一个结点
int scllinsert(sclnode *head,int i,datatype x)
{
sclnode *p,*q;
int j;
p=head->next;j=1;
while(p!=head&&j
}
if(j!=i-1&&i!=1)
{ printf("input parameter error!");
return 0;
}
if((q=(sclnode*)malloc(sizeof(sclnode)))==null)exit(1);
q->data=x;
q->next=p->next;
p->next=q;
return 1;
}
//删除一个结点
int sclldelete(sclnode *head,int i,datatype *x)
{
sclnode *p,*q;
int j;
p=head;j=0;
while(p->next!=head&&j
if(j!=i-1)
{printf("delete parameter error!");
return 0;
}
q=p->next;
p->next=p->next->next;
*x=q->data;
free(q);
return 1;
}
//取一个结点数据元素值
int scllget(sclnode *head,int i,datatype *x)
{
sclnode *p;
int j;
p=head;j=0;
&n
相关文章
- 《燕云十六声》配置要求介绍 12-25
- 《燕云十六声》搬砖介绍 12-25
- 时空中的绘旅人天宇之间怎么玩 绘旅人天宇之间活动玩法介绍 12-25
- QQ2024年度报告怎么看 2024qq年度报告玩法介绍 12-25
- 归龙潮珠砂什么时候up 归龙潮红缘绮梦卡池介绍 12-25
- 王者荣耀S38赛季有什么更新 12-25
热门栏目
-
php教程
php入门 php安全 php安装 php常用代码 php高级应用 -
asp.net教程
基础入门 .Net开发 C语言 VB.Net语言 WebService -
手机开发
安卓教程 ios7教程 Windows Phone Windows Mobile 手机常见问题 -
css教程
CSS入门 常用代码 经典案例 样式布局 高级应用 -
网页制作
设计基础 Dreamweaver Frontpage js教程 XNL/XSLT -
办公数码
word excel powerpoint 金山WPS 电脑新手 -
jsp教程
Application与Applet J2EE/EJB/服务器 J2ME开发 Java基础 Java技巧及代码