#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}node,*link;
node * init_list()
{
node * head;
head = (node*)malloc(sizeof(node));
head->next = NULL;
return head;
}
link insert_tail()
{
node * head, *rear;
node *s;
int data=0;
head = rear = init_list();
printf("输入-1表示输入结束:\n");
while (1)
{
s = init_list();
scanf("%d", &data);
if (data == -1)
{
break;
}
else
{
s->data = data;
s->next = rear->next;
rear->next = s;
rear = s;
}
}
return head;
}
int find_list(link l, int data)//查找是否有该数据
{
node *q;
q = l->next;
while (q!=NULL)
{
if (q->data == data)
{
printf("查找成功\n");
return data;
}
else{
printf("失败\n");
}
}
return data;
}
void printf_list(link l)
{
node * p;
p = l;
if (p == NULL)
{
return;
}
while (p->next)
{
p = p->next;
printf("%d ", p->data);
}
}
int findpos(link l, int data)//根据数据记录位置
{
node *q;
q = l;
int i = 0;
int p = 0;
while (q ->next)
{
if (q->data == data)//if后面不加else return 否则只可以找到第一个数据
{
q = q->next;
i++;
p = i;
printf("find:pos is:%d\n", p);
return 1;
}
}
printf("cant find!\n");
return -1;
}
node * find_pos(link l, int pos)//查找该位置的数据
{
node * temp;
int i = -1;//也可以等于0但对于后面插入或者删除第一个元素有影响
temp = l;
while (temp->next != NULL)
{
++i;
temp = temp->next;
if (i == pos)
{
printf("在该链表中找到了该位置的数据:%d\n", temp->data);
//printf("%d\n", temp->data);
return temp;
}
}
printf("位置输入有误\n");
return NULL;
}
link insert_pos(link l, int pos,int data)
{
node *p=find_pos(l, pos-1);//pos-1是在数据之前插入,若是第一个则在后面插入
//pos实在数据之后插入
node *s;
if (p == NULL)
{
printf("位置错误\n");
return NULL;
}
else{
s = init_list();
s->data = data;
s->next = p->next;
p->next = s;
return p;
}
}
link del_pos(link l, int pos)
{
node * tem = find_pos(l, pos-1);//pos-1删除的是pos的前一个元素
//pos是删除pos的后一个元素
//同样对第一个元素没用
node *s;
if (tem == NULL||tem->next==NULL)//保证链表不为空并且需要连接的下一个结点不为空
{
printf("位置错误\n");
return NULL;
}
else{
s = init_list();
s = tem->next;
tem->next = s->next;
free(s);
return tem;
}
}
int main()
{
link l;
l = init_list();
//l = insert_tail();
//printf_list(l);
link c = init_list();
c = insert_tail();
//insert_pos(l,1,2);
del_pos(c,2);
printf_list(c);
system("pause");
}
相关推荐
设备树实践:从零构建一个嵌入式板级的设备树描述
本文详细介绍了如何从零开始为嵌入式Linux系统构建设备树(Device Tree),以i.MX6ULL处理器为例,涵盖硬件分析、设备树语法、外设配置及调试技巧。通过实践指导,帮助开发者掌握设备树编写,实现硬件与软件的高效对接,提升嵌入式开发效率。
数据结构代码:单链表的建立插入和删除
数据结构代码:单链表的建立插入和删除 # include<stdio.h> # include<malloc.h> # include<stdlib.h> # define TRUE 1 # define FALSE 0 # define OK 1 # define ERROR 0 # define INFEASIBLE -1 # define OVERFLOW...
揭秘N531:这颗不到2毛钱的国产栅极驱动器,如何成为功率开关的“全能搭档”?
本文深入解析了国产栅极驱动器N531如何成为功率开关的“全能搭档”。针对MOSFET和IGBT等电压驱动器件在实际应用中需要大电流实现快速开关的核心痛点,N531凭借±500mA的强劲驱动能力、宽电压供电及高兼容性,有效降低开关损耗,提升系统效率与可靠性。文章通过实战案例与设计指南,阐述了这颗高性价比芯片在简化设计、降低成本方面的显著优势。
单链表的增删查改详解(代码加图解)
单链表的特点是只能从头开始向后遍历,所以我们在增删查改的过程中都要考虑从头开始的问题,单链表的临界情况是对于头结点的操作,我们需要对头节点多加考虑。 class NodePractice{ //存储结点的内容 int data; //存储下一个结点的地址 NodePractice next; public NodePractice(int data) { this.data = data; } } public class SingleLi
详解电路设计中的RC电路
一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..
【PowerBI专栏】PowerBI导入MYSQL数据库
本文介绍了在PowerBI中连接MySQL数据库的方法。首先需要下载并安装MySQL官方.NET连接驱动(推荐8.4.0版本),安装完成后重启PowerBI。连接时需填写服务器IP和数据库名称等必填参数。文章详细说明了连接配置步骤,包括账户设置、数据表选择以及可能遇到的数据格式转换问题处理。最后指导用户完成数据清洗后进入PowerPivot进行后续计算。特别提醒最新9.4版本可能存在兼容性问题,建议使用稳定的8.4版本连接器。
【数据结构与算法】单链表的插入和删除
众所周知,顺序表中的每个结点中只存放数据元素,其优缺点为:优点:可随机存取,存储密度高;缺点:要求大片连续空间,改变容量不方便。而单链表中的每个结点除了存放数据元素外,还要存储指向下一个节点的指针,其优缺点为: 优点:不要求大片连续空间,改变容量方便 缺点:不可随机存取,要耗费一定空间存放指针
Python 爬虫实战:爬取 Bing 搜索功能链接(国际搜索引擎数据采集技巧)
在当今数字化信息爆炸的时代,搜索引擎已成为我们获取知识、了解世界的得力助手。Bing,作为全球知名的搜索引擎之一,拥有庞大的数据索引和精准的搜索算法。通过 Python 爬虫技术爬取 Bing 搜索区域的链接信息,不仅能帮助我们快速收集大量有价值的数据,还能为后续的数据分析、内容挖掘等任务提供丰富的素材。
单链表的插入与删除
单链表的插入、删除、倒序的简单理解
SAR图像降噪:基于小波变换和双边滤波器的Matlab实现
小波变换和双边滤波器是常用的图像降噪技术,它们可以在保持图像细节的同时有效抑制噪声。本文介绍了基于小波变换和双边滤波器的SAR图像降噪方法,并提供了相应的Matlab源代码。通过对比原始图像和降噪后的图像,可以观察到噪声得到一定程度的抑制,同时保留了图像的细节信息。本文将介绍一种基于小波变换和双边滤波器的方法,用于SAR图像的降噪,并提供相应的Matlab源代码。希望这篇文章能够帮助您理解基于小波变换和双边滤波器的SAR图像降噪方法,并为您提供实现该方法的Matlab源代码。对图像的高频部分进行降噪处理。
在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战
本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。
单链表的插入删除(数据结构与算法)
单链表是一种常见的线性数据结构,由一个个节点组成,每个节点包含两个部分:数据部分和指针部分。单链表的特点是每个节点只能指向下一个节点,而最后一个节点指向一个空指针。这个空指针常用来表示链表的结尾,一般命名为 nullptr。
无线充电Qi协议正向通信FSK的解调设计
常见的FSK解调方法是使用频率锁相环(PLL)来跟踪输入信号中的频率变化。PLL根据输入信号的频率变化来生成数字信号,从而实现FSK信号的解调。本文将详细介绍无线充电Qi协议正向通信FSK的解调设计,并提供相应的源代码。在上述示例代码中,我们首先定义了FSK解调的参数,包括采样率、载波频率、每个比特的持续时间和比特判定阈值。最后,通过比较滤波后的信号与比特判定阈值,我们将解调后的数字数据转换为0和1的序列。请注意,上述代码仅为示例,实际的解调设计可能需要根据具体的应用场景和系统要求进行调整和优化。
单链表的插入和删除
在上一篇文章(单链表的定义)中我们已经了解了单链表的含义和简单的实现。那么在这篇文章中,我们将要来讲解单链表的插入和删除操作。我们在上篇文章中已经讲解过,如果想要在表L中的第i个位置上插入指定元素e,我们需要找到第i-1的结点,在其后插入新的结点。大致步骤如下:当然当我们想在第一位插入新结点时,对于带头结点的链表的好处就是,在头部插入数据和其他任意一个位置插入数据的操作是一样的,非常方便。 代码分析(在第一个位置插入结点) 若 i = 1我们直接看函数的内部在进入时首先会判断,i的合法性(i小于1是不合法的
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
【数据结构】单链表的插入和删除
…
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
单链表的按位置插入和删除
单链表的按位置插入和删除 以下代码实现了 单链表的按位置插入和删除 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElementType; typedef struct node { ElementType data; struct node *Next...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
2.6.单链表的插入和删除
//定义单链表结点类型int data;//每个结点存放一个数据元素//指针指向下一个结点//初始化一个单链表(带头结点)//分配一个头结点if(L==NULL) //代表内存不足,分配失败-->意味着带头结点的单链表无法创建else//头结点之后暂时还没有节点,所以指向NULL//判断单链表是否为空(带头结点)if(L->next==NULL) //头结点之后如果指向NULL,代表没有数据else。
C++ 单链表创建、插入和删除
该代码转载而来,找不到出处了,可能含较多BUG与不住,仅提供一种思路。 #include <iostream> #include <stdio.h> #include <string> #include <conio.h> /** * cstdio是将stdio.h的内容用C++头文件的形式表示出来。 *stdio.h是C标准函数库中的头文件...
单链表的插入和删除动画演示
setfillcolor(WHITE) :设置填充颜色为白色。这是为了接下来的 solidrectangle 函数调用做准备,确保矩形区域将被白色填充solidrectangle(0,0,EASYX_WIDTH,200) :这步为了用于清除之前绘制的链表图形和其他文本信息。display_list(*L) :调用 display_list重新绘制整个链表,此时链表已经包含了新插入的节点,因此这一步是为了展示更新后的链表结构。//擦除显示链表的区域。
单链表的创建、插入、删除和输出
#include<stdio.h> #include<stdlib.h> typedef struct pop { int num; struct pop *next; }top; top* listDelete(top *start) //删除指定的元素 { int a; top * t=start; scanf("%d...
单链表的删除和插入
单链表的删除和插入
单链表的定义、插入和删除
单链表的定义、插入和删除(C语言)
单链表的插入和删除(C++)
要求:实现单链表的插入和删除 分析:熟悉链表的基本操作。 代码如下: #include using namespace std; struct Node{ int data; Node *next;}; Node *p1,*p2=new Node;Node *Linklist=
303



被折叠的 条评论
为什么被折叠?



