//初始化
Node*InitList()
{
Node*head=(Node*)malloc(sizeof(Node));
head->next=NULL;
head->data=-1;
return head;
}

增加数据

void Add(Node*s)
{
Node*p=s;
int n;
printf("你要输入多少数据:");
scanf("%d",&n);
printf("请输入%d个数据:",n);
for(int i=1;i<=n;i++)
{
Node*q=(Node*)malloc(sizeof(Node));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=s;
}

删除操作

void Delete(Node*s)
{
int a;
printf("请输入你要删除的数据:");
scanf("%d",&a);
Node*p=s->next;
int flag=0;
Node*q=s;
while(p!=s)
{
if(p->data==a)
{
q->next=p->next;
free(p);
flag=1;
break;
}
p=p->next;
q=q->next;
}
}

插入操作

void Insert(Node*s)
{
int a;
int flag=0;
Node*q=(Node*)malloc(sizeof(Node));
printf("请输入你要插入的数据:");
scanf("%d",&q->data);
printf("请输入你要插入哪个数据之后:");
scanf("%d",&a);
Node*p=s->next;
while(p!=s)
{
if(p->data==a)
{
q->next=p->next;
p->next=q;
flag=1;
break;
}
p=p->next;
}
if(flag==1)
printf("插入成功!");
else
printf("插入失败!");
}
//头插法
/*
void Insert(Node*s)
{
Node*q=(Node*)malloc(sizeof(Node));
printf("请输入你要插入的数据:");
scanf("%d",&q->data);
q->next=s->next;
s->next=q;
} */

显示操作

void Display(Node*s)
{
Node*v=s->next;
while(v!=s)
{
printf("%d->",v->data);
v=v->next;
}
}

清空操作

void Empty(Node*s)
{
Node*p=s->next;
Node*q=p->next;
while(p!=s)
{
free(p);
p=q;
q=q->next;
}
free(s);
}

原代码如下
#include<stdio.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Nodenext;
}Node;
//初始化
Node
InitList()
{
Nodehead=(Node)malloc(sizeof(Node));
head->next=NULL;
head->data=-1;
return head;
}
void Add(Nodes)
{
Node
p=s;
int n;
printf(“你要输入多少数据:”);
scanf("%d",&n);
printf(“请输入%d个数据:”,n);
for(int i=1;i<=n;i++)
{
Nodeq=(Node)malloc(sizeof(Node));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=s;
}
void Display(Nodes)
{
Node
v=s->next;
while(v!=s)
{
printf("%d->",v->data);
v=v->next;
}
}
void Empty(Nodes)
{
Node
p=s->next;
Nodeq=p->next;
while(p!=s)
{
free§;
p=q;
q=q->next;
}
free(s);
}
/void Delete(Nodes)
{
int a;
printf(“请输入你要删除的数据:”);
scanf("%d",&a);
Node
p=s->next;
int flag=0;
Nodeq=s;
while(p!=s)
{
if(p->data==a)
{
q->next=p->next;
free§;
flag=1;
break;
}
p=p->next;
q=q->next;
}
}
/
void Insert(Nodes)
{
int a;
int flag=0;
Node
q=(Node*)malloc(sizeof(Node));
printf(“请输入你要插入的数据:”);
scanf("%d",&q->data);
printf(“请输入你要插入哪个数据之后:”);
scanf("%d",&a);
Nodep=s->next;
while(p!=s)
{
if(p->dataa)
{
q->next=p->next;
p->next=q;
flag=1;
break;
}
p=p->next;
}
if(flag1)
printf(“插入成功!”);
else
printf(“插入失败!”);
}
//头插法
/

void Insert(Nodes)
{
Node
q=(Node*)malloc(sizeof(Node));
printf(“请输入你要插入的数据:”);
scanf("%d",&q->data);
q->next=s->next;
s->next=q;
} /
int main()
{
Node
head=InitList();
Add(head);
// Delete(head);
Insert(head);
printf(“该数据情况如下”);
printf("\n");
Display(head);
Empty(head);
printf(“该链表已清空!”);
return 0;
}

c语言实现循环单链表的更多相关文章

  1. C语言版本:循环单链表的实现

    SClist.h #ifndef __SCLIST_H__ #define __SCLIST_H__ #include<cstdio> #include<malloc.h> # ...

  2. c语言循环单链表

    /************************************************************************* > File Name: singleLin ...

  3. c语言有头循环单链表

    /************************************************************************* > File Name: singleLin ...

  4. 带头结点的循环单链表----------C语言

    /***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...

  5. 循环单链表定义初始化及创建(C语言)

    #include <stdio.h> #include <stdlib.h> /** * 含头节点循环单链表定义,初始化 及创建 */ #define OK 1; #defin ...

  6. C代码实现非循环单链表

    C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...

  7. 简单约瑟夫环的循环单链表实现(C++)

    刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...

  8. PTA 循环单链表区间删除 (15 分)

    本题要求实现带头结点的循环单链表的创建和单链表的区间删除.L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于m ...

  9. 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)

    所实现的循环单链表的结构例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill ...

随机推荐

  1. 从原理学习Java反序列化

    1 序列化与反序列化 1.1 概念 序列化: 将数据结构或对象转换成二进制串的过程 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 1.2 使用场景 当你想把的内存中的对象状态 ...

  2. 【黑马程序员C++ STL】学习记录

    黑马程序员 2017 C++ STL 教程(STL 部分已完结) 基于黑马STL课程整理:黑马程序员2017C++STL教程 视频链接 专栏:本STL专栏目录 文章目录 黑马程序员 2017 C++ ...

  3. ActiveMQ代码-01

    p2p模式 生产者 package com.activemq.activemqdemo.p2p; import org.apache.activemq.ActiveMQConnectionFactor ...

  4. Linux 环境下安装 Nexus 私服存储库

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.nexus私服存储库简介 Nexus 是一个强大的maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问.,还可以用来创建yum ...

  5. springcloud学习03-spring cloud eureka(上)

    对eureka一个大概介绍:https://blog.csdn.net/u010623927/article/details/88762525 这里面有个我做dubbo时的一个理解的错误:服务注册中不 ...

  6. springcloud学习00-开发工具相关准备

    用maven构建springcloud项目,目录结构(图片来源:https://blog.csdn.net/qq_36688143/article/details/82755492) 1.maven ...

  7. Prometheus由于时间不同步导致数据不显示

    原文链接:Prometheus由于时间不同步导致数据不显示 问题 部署 prometheus 后,访问前端界面发现: 这是由于你windows机器与部署prometheus服务器的时间不同步导致的. ...

  8. 在Windows环境下构建Lua 入门

    在Windows环境下构建Lua 一:准备软件 1.C-compiler(TDM GCC)  http://tdm-gcc.tdragon.net/download 2.Lua源代码  http:// ...

  9. 从字符串某位置开始的递增串(dfs)注意for循环中下标的错误

    #include <iostream> #include <string> using namespace std; char res[50];int tag=1; void ...

  10. vector存放边的方法

    #include<bits/stdc++.h> using namespace std; struct Edge{ int x; int y; }; vector <Edge> ...