模 块 划 分
(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
罚罪1+2全80集阿里云盘全集资源链接-罚罪1+2全集高清1080P/4K阿里云盘资源下载无删减
邵氏精品禁品未删减资源在线看-必看的50部邵氏电影无删减观看入口
羞羞漫画高清最新资源-正规平台免费入口与无删减资源导航
日漫入口-官方认证安全入口与无删减日漫资源直达导航
一拳超人漫画入口-2026最新免费高清全集在线看
杨紫《生命树》1080p全40集迅雷磁力链接分享-杨紫《生命树》40集高清完整版迅雷云盘下载1080P(4k)资源