模 块 划 分
(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
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮