本文介绍: 单向循环链表的头插 头删 尾插和尾删。
单向循环链表的头插 头删 尾插和尾删
//头结点插入
Linklist insere_element(Linklist head,datatype element)
{
Linklist s=creat();
s->data=element;
if(NULL==head)
{
head=s;
}
else
{
Linklist p=head;
while(p->next!=head)
{
p=p->next;
}
s->next=head;
head=s;
p->next=head;
}
return head;
}
/头删
Linklist head_del(Linklist head)
{
if(NULL==head)
return head;
Linklist del=head;
head=head->next;
free(del);
del=NULL;
return head;
}
//尾插法
Linklist insert_rear(Linklist head,datatype element)
{
//先创建一个结点
Linklist s=creat();
s->data=element;
//判断是否为空
if(head==NULL)
{
head=s;
}
else
//有多个节点的情况
{
Linklist p=head;//防止返回的时候出错,定义p为head,否则head改变后返回是错误的
//找到最后一个结点
while(p->next)
{
p=p->next;
}
p->next=s;
}
return head;
}
//尾删
Linklist rear_del(Linklist head)
{
Linklist del=NULL;
if(NULL==head)
return head;
else if(head->next==NULL)
{
free(head);
head==NULL;
}
else
{
del=head;
while(del->next->next)
{
del=del->next;
}
free(del->next);
del->next=NULL;
}
return head;
}
约瑟夫环
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum
{
FALSE=-1,
SUCCESS
};
typedef int datatype;
typedef struct Node
{
datatype data;
struct Node *next;
}*linklist;
linklist creat();
linklist insert_rear(linklist head,datatype element);
void output(linklist head);
linklist Joseph(linklist head,int n,int m);
linklist Joseph(linklist head,int n,int m)
{
if(head==NULL)
return head;
linklist p=head;
for(int i=0;i<n;i++)
{
for(int j=0;j<m-2;j++)
{
p=p->next;
}
linklist del=p->next;
printf("%-5d",del->data);
p->next=del->next;
free(del);
del=NULL;
p=p->next;
}
return NULL;
}
int main(int argc, const char *argv[])
{
//定义头指针
linklist head=NULL;
int n;
datatype element;
printf("please enter n:");
scanf("%d",&n);
//循环写入
for(int i=0;i<n;i++)
{
printf("please enter element:");
scanf("%d",&element);
head=insert_rear(head,element);
}
//遍历
output(head);
//约瑟夫环
int m;
printf("please enter m:");
scanf("%d",&m);
head=Joseph(head,n,m);
return 0;
}
原文地址:https://blog.csdn.net/m0_61902319/article/details/136018028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_65871.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。