双向链表的创建查找与删除元素

双向链表的基本常用操作(创建、初始化、插入、删除、链表长度、查找指定元素的位置、链表的销毁) c语言 数据结构 超详细~~ /本程序中包含对双向链表的::创建、初始化、插入、删除、链表长度、查找指定元素的位置以及双向链表的销毁/ #include<stdio.h> #include<stdlib.h> typedef int Elemtype; typedef struct linknode { Elemtype data; struct linknode* next; }Linknode,Linklist; //创建循环链表 Linknode create() { Linklist head = (Li 阅读详情

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

#include <stdio.h>
#include <stdlib.h>
#define ERROR printf("ERROR");
#define MAXSIZE 20
#define YES "yes"

typedef struct student {
    char name[MAXSIZE];
    struct student *Prior,*Next;
}Node,*LinkList;

struct student *CreatList(int n){
    int i;
    LinkList p1,p2,head;

    head = (LinkList)malloc(sizeof(Node));
    head->name[0] = '0';
    head->Prior = NULL;
    head->Next = NULL;
    p2 = head;
    printf("Please input the intenger array:\n");

    for(i=0;i<n;i++){
        p1 = (LinkList)malloc(sizeof(Node));

        scanf("%s",p1->name);

        p2->Next = p1;

        p1->Prior = p2;
        p1->Next = NULL; 
        p2 = p1; 
        }

    p1->Next = NULL;
    return head;
}

//查找元素 
Node *search(LinkList h,char* E)
{
        LinkList p;
        p = h->Next;

        while(p){
            if(!(strcmp(p->name,E)))
                return p;
            else
                p = p->Next;
        }ERROR
        return 0;
} 

void ElementDelete(LinkList pt)
{
    /*方法1: 
    LinkList qt;
    qt = pt->Prior;
    pt = qt->Next;
    qt->Next = pt->Next;
    free(pt);*/ 

    //方法2:
    pt->Next->Prior = pt->Prior;
    pt->Prior->Next = pt->Next;
    free(pt);
}

int main(int argc, char *argv[]) {

    int n,name;
    char FindName[MAXSIZE],st[3];
    LinkList p,q,head;

    printf("Please input the chain length:\n");
    scanf("%d",&n);
    head = CreatList(n);
    p = head->Next;
    printf("Now the chain is:\n");
    while(p){
        printf("%s\t",p->name);
        p = p->Next;
    } 
    printf("\n");

    printf("Please enter the name you want to find:\n");
    scanf("%s",FindName);
    q = search(head,FindName);
    if(q){
    printf("已找到:%s\nAre you sure to delete it?('yes'or'no'):\n",q->name);
    }

    scanf("%s",st);
    if(!(strcmp(YES,st))){
        ElementDelete(q);
        p = head->Next;
        printf("Now the chain is:\n");
        while(p){
            printf("%s\t",p->name);
            p = p->Next;
        } 
    }
    else
        printf("Exited");   

    getch();
    return 0;
}
双向循环链表的讲解及实现(图解+代码/C语言) 本文主要分享了双向循环链表(带头)的写法,使用C语言完成,文中附有具体的结构图片帮助大家理解,希望对大家有帮助 阅读详情

相关推荐

双向链表代码

一个双向链表,可以进行添加元素,查找元素,删除元素,以及排序

【C语言】带头双向循环链表(list)详解(定义、增、删、查、改)

带头双向循环链表,有一个数据域和两个指针域,一个是前驱指针,指向其前一个节点;一个是后继指针,指向其后一个节点//定义双向链表的节点typedefintDLTDateType;//定义数据类型typedefstructDLT_Node{...

杨同学的博客 3563

双向链表的插入、删除、查找

这是一个关于双向链表的建立、头部插入、尾部插入、查找元素、删除元素的完整程序。

双向循环链表

链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

qq_52191699的博客 9426

双向链表的建立,插入,删除,寻找元素等算法

自己编写的双向链表功能实现算法,纯自己瞎编的,虽然用来混点分数,但还是可以做为参考的吧,哈哈

射频电路设计——射频器件基础

本文仅供自己复习使用,请勿转载! 射频电路制作方法 MCM工艺 CMOS工艺 趋肤效应、深度 频率越高趋肤效应越明显 高频器件 高频电阻 绕线的比贴片的多一个电感,是因为绕线的因为是线绕制的,只有有线就会有电感,所以绕线电阻等效模型会比贴片的多一个电感 多晶硅电阻模型 深线性区MOS电阻 高频电阻的频率响应 记忆的话就后面的频率特性有点像电容的 高频电容 作用 单层贴片式电容 多层贴片式电容 MIM电容 MOM电容 由于是并联的,所以总的电容值是单个的直接相加 PN结电容 M.

输出每日所学,供大家学习使用 7150

双向循环链表的建立、查找、添加、删除

双向循环链表的建立、删除、插入、、查找

dream_follower的博客 4493

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1968

删除链表中某特定值的元素【三种方法】(LeetCode 203)

删除结点的步骤 找到该结点的前一个结点 进行删除操作。 具体删除方式:我们假设要删除的节点是 i ,那我们只需要找到 i 的前驱 p , 然后让 p -> next =p -> next -> next,这样就跳过了 i 这个节点,自然也就实现了删除的目的。 但是这个方法需要找到被删除节点的前驱,对于头结点(也就是第一个节点)来说, 他是没有前驱的,需要特殊处理。下面介绍的方法,第一种是把头结点单独拿出来考虑,第二种是加了一个虚拟头结点,都解决了这个问题。 方法一 删除头结点.

马小超 5670

RexUniNLU零样本通用自然语言理解:nlp_deberta_rex-uninlu_chinese-base模型实战解析

本文深入解析了RexUniNLU零样本通用自然语言理解模型(nlp_deberta_rex-uninlu_chinese-base)的实战应用。通过详细的环境配置、模型加载及实战案例,展示了该模型在零样本场景下的强大能力,如实体识别和复杂关系抽取,显著提升NLP任务效率。

weixin_29088655的博客 251

GIS坐标系转换以及空间校正和地理配准

许多小伙伴都对坐标系,投影这类问题迷迷糊糊,我之前也一样,现在总结一下。 坐标系的转换1.为什么要进行坐标系的转换?2. 不同坐标系的介绍1.地理坐标系我国常见的地理坐标(1).北京54坐标系(2).西安80坐标系(3).WGS-84坐标系(4).大地2000坐标系2.投影坐标系我国常用的投影坐标系(1) UTM投影(2) 高斯-克吕格投影(3) 兰伯特投影(4) 阿尔伯斯投影投影坐标系的选择3. 坐标系的转换1.已知坐标系之间的转换1.1 两坐标系的参考椭球相同1.2 两坐标系的参考椭球不一致,但是GIS

m0_47258611的博客 8913

双向链表删除元素操作

说起删除,说复杂吧,也不复杂,主要是理解思路,就变得非常简单来看看如何删除的,删除的思路是如何扭曲你的大脑的?删除的思路删除的权限判断参数list,pos判断pos>list.size;用c++cerr输出错误信息pos过于大返回定义一个用来找到pos的位置的结点取名为deleteNode;当前结点一套循环inext/找到下一个结点当i==pos退出循环。.........

xiaov_sen的博客 1660

二、NovAtel Connect 2.3.2 版本 操作说明

一、连接方式 有 串口连接、USB连接、蓝牙连接、无线网连接、网口连接,具体的连接方式看博客: https://blog.youkuaiyun.com/hltt3838/article/details/110622732 下面具体的介绍一下 串口的连接方式: 接收机有三个串口,COM1、COM2、COM3,看上面的连接就知道了! 并且有三个对应的线,1 2 3 ; 把线和串口对应连接,串口的另一端和电脑连接,当然如果电脑没有串口,可以用 串口转USB,如线图所示: (当然,一定要连接电源呀) ...

努力努力努力 4383

双向链表的建立、插入、查找和删除

双向链表的建立、插入、查找和删除 #include <stdio.h> #include <stdlib.h> typedef int ListData; typedef struct dnode { ListData data; struct dnode *llink,*rlink; }DblNode; typedef DblNode* DblList; DblList CreatList(DblList &first)//创建双向链表 { fi

鹅鹅的博客 1675

材料仿真软件:Quantum Espresso_(15).声子与振动模式计算

通过上述步骤和代码示例,您应该能够使用 Quantum Espresso 进行声子与振动模式的计算。声子计算是材料科学研究中的重要工具,可以帮助我们更好地理解和设计材料的性能。希望本节内容对您有所帮助。

kkchenjj的博客 1182

9篇9章1节:认识 SHARE 数据库

SHARE数据库是欧洲最大的跨国老龄化追踪调查项目,覆盖28个欧洲国家和以色列的50岁及以上人群。自2004年启动以来,已完成14-16万受访者的50-60万次访谈,形成跨度20年的纵向数据。该数据库采用标准化的多阶段抽样方法,收集健康、经济和社会关系等领域的多维度信息,具有高度的跨国可比性。SHARE与美国HRS、英国ELSA等调查对接,构成全球老龄化研究网络。数据免费向科研人员开放,但需注册并承诺仅用于非商业性研究。该项目由欧盟委员会等多方资助,为老龄化研究和政策制定提供了重要实证依据。

MD Code 901

链表_双向链表

typedef int ELEM_TYPE; typedef struct Node { ELEM_TYPE mdata; struct Node* pnext; struct Node* prev; }DNode,*PDList; void Init(PDList pl); DNode* BuyNode(ELEM_TYPE val); Status InsertHea...

Duc_Duke的博客 231

【实战】基于 Inner-IoU 的 YOLOv8 优化指南:显著提升检测精度

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv8 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

m0_64661770的博客 107

双向链表C代码实现

##双向循环链表代码实现 ###结点结构 //定义结点 typedef struct Node{ ElemType data; struct Node *prior; struct Node *next; }Node; typedef struct Node * LinkList; ###创建链表 Status createLinkList(LinkList *L){ ...

Riseboy的博客 362

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C语言实现带头双向循环链表

头文件 List.h #pragma once #include<stdio.h> #include<malloc.h> #include<assert.h> //带头双向循环链表增删查改 typedef int LTDataType; typedef struct ListNode { LTDataType _val; struct ListNode* _next; struct ListNode* _prev; }ListNode; ListNode* Li

Dly6161的博客 515

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C语言初阶数据结构(三)双向链表(保姆级别详细图解,轻松上手,通俗易懂)

保姆级别C语言双向链表

qq_54469537的博客 3167

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

c++ 双向链表

#include &amp;lt;iostream&amp;gt; using std::cout; using std::endl; struct Node { int data; struct Node * next; struct Node * pre; }; 一、创建双向链表 Node * createList() { Node * head = new Node; if (NULL == ...

qq_42972267的博客 1253

【数据结构算法】③、双向链表和双向循环链表的实现、双向链表的创建-遍历-插入-删除-删除指定元素-查询指定元素、双向循环链表的创建-遍历-插入删除

【数据结构算法】③、双向链表和双向循环链表的实现、双向链表的创建-遍历-插入-删除-删除指定元素-查询指定元素、双向循环链表的创建-遍历-插入删除

慢慢来就很快。 2055

C/C++ 循环双链表

在循环链表的基础上将尾节点和头节点连接起来,逻辑上是个环状 #include <stdio.h> #include <stdlib.h> #include<iostream> using namespace std; typedef struct double_list { int date; struct double_list *pre; ...

qq_39839033的博客 166

双向循环链表----C语言

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;typedef int Elemtype;typedef int Status;typedef struct node{    Elemtype data;    struct node *next, *prior;}ListNode;typedef ListNode *LinkList;//双向循环...

weixin_42310549的博客 278

双向链表超详解——连我奶奶都能学会的复杂链表(带头双向循环)

手把手教你如何手撕双向链表!

2301_78190552的博客 2405
上一篇: 汉诺塔递归实现
下一篇: 深入理解内存对齐
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值