单链表的建立,反序,插入,删除

单链表基础 时间限制:1000ms 内存限制:256M 实验目的: 编写代码,实现带头结点的单链表数据结构,完成其基础运算方法,并加以测试。 实验要求: 1、单链表的类型定义如下: typedef int datatype; //结点数据类型,假设为int typedef struct node * pointer; //结点指针类型 struct node { //结点结构 datatype data; pointer next; }; 阅读详情
#include <stdio.h>
#include <malloc.h>
typedef struct _node
{
int data;
struct _node *next;
}Node,*pNode;
pNode headnode = NULL;
void creatnode()
{
pNode current,head;
int temp = 0;
if(headnode == NULL)
{
headnode = (pNode)malloc(sizeof(Node));
printf("sizeof(_node)=%d\n",sizeof(Node));
}
else
{
printf("create bad\n");
return;
}
if(headnode == NULL)
{
printf("malloc error\n");
return;
}
else
{
headnode->data = 0;
}
head = headnode;
head->next = NULL;
for(temp = 0;temp < 4;temp ++)
{
current = (pNode)malloc(sizeof(Node));
if(!current)
{
printf("current malloc error\n");
return;
}
current->data = temp;
current->next = NULL;
head->next = current;
headnode->data ++;
head = current;
}


}
void printNode(pNode pnode)
{
pNode tempnode;
tempnode = pnode;
while(tempnode)
{
printf("node->data=%d\n",tempnode->data);
//printf("node addr=%x,next addr=%x\n",(unsigned int)tempnode,(unsigned int)tempnode->next);
tempnode = tempnode->next;
}
}
void invertNode(pNode pnode)
{
pNode prenode = NULL;
pNode current;
pNode pnext;
current = pnode;
while(current)
{
pnext=current->next;
if(pnext == NULL)
headnode = current;
current->next = prenode;
prenode = current;
current = pnext;
}
}
void appendToEnd(pNode pnode)
{
pNode tempnode = headnode;
while(tempnode)
{
tempnode = tempnode->next;
if(tempnode->next == NULL)
{
tempnode->next = pnode;
break;
}
}
}
void deleteNode(int data)
{
pNode tempnode = headnode;
pNode pnext = NULL;
if(tempnode->data == data)
{
headnode = headnode->next;
free(tempnode);
return;
}
while(tempnode)
{
pnext = tempnode->next;
if(pnext->data == data)
{
tempnode->next = pnext->next;
free(pnext);
break;
}
tempnode = pnext;
}
}
void main()
{
//pNode addnode = (pNode)malloc(sizeof(Node));
//addnode->next = NULL;
//addnode->data = 20;
creatnode();
printNode(headnode);
//invertNode(headnode);
//printNode(headnode);
//appendToEnd(addnode);
deleteNode(2);
printNode(headnode);
deleteNode(4);
printNode(headnode);
}
单链表反序 链表优缺点:1,动态添加,删除节点方便。2,查找效率低需要从头到尾遍历各个节点。 数组优缺点:1,查找效率高,可以通过下标随机访问各个元数。2,动态添加,删除节点不方便需要移动数据多。 单链表定义: typedef struct _slist { int data; struct _slist * pNext; }slist; 单链表添加: slist* add_no... 阅读详情

相关推荐

Qt + Robot Interface实现上位机和发那科机器人通信

摘要: 本文详细介绍了FANUC机器人的RobotInterface模块开发流程,包括环境配置、通信连接和上位机开发等内容,并提供了数值寄存器、位置寄存器和当前位置的读写代码等示例。适用于自动化行业有通讯需求的上位机开发人员,保姆教程,超详细版,新手也可以根据示例开发自己的通信程序。

xyhkma的博客 1750

链表操作(建立,插入,删除,排序,逆序)

#include<iostream> #include<stdio.h> #include <windows.h> #include<string> #include<vector> using namespace std; typedef struct list{ struct list *next; int data; }l...

杨跟的博客 450

RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling Overview of RRAM Physical Mechanism A general picture for the filamentary switching mechanism. Forming: 对本征RRAM样本,加电压VformingV_{forming}Vforming​,中间氧化层的O

Blog of Lucky H6 992

双向链表的建立和反序

链表以前一直没有自己手写过,发现程序这个东西,一定的自己动手练习,才会掌握的比较牢固。所以今天就自己动手写了双向链表的建立和反序。记录一下 #include #include typedef struct _node { int data; struct _node *pre; struct _node *next; }Node,*pNode; pNode head = NU

devil27的专栏 816

GN算法边介数计算优化指南:如何提升大规模社交网络分析效率

本文深入探讨了GN算法在大规模社交网络分析中的核心瓶颈——边介数计算,并提供了从算法优化到工程部署的完整性能提升方案。通过引入Brandes算法、并行计算、增量更新及分布式处理等策略,有效解决了传统GN算法在处理百万级网络时效率低下的问题,为社交网络社区划分等实际应用提供了高效解决方案。

weixin_29196613的博客 486

自动化测试-自愈技术

随着人工智能的发展,作为一名软件测试工程师,相信大家都会思考如何把这一前沿技术引入到我们的自动化测试当中,想一万遍不如做一遍。,传递当前页面状态,获取之前成功的定位器路径,比较它们,并生成修复的定位器列表。如果修复成功,我们可以使用 Healenium Idea 插件更新我们的自动化测试代码:插件使用修复定位器寻找修复和更新测试代码。的旧定位器去定位按钮的时候,脚本就会报错,提示 “NoSuchElement”的错误异常。现在,我们假设开发人员变更了应用程序的UI界面,改变了这个按钮的id属性,从。

qq_58223744的博客 2660

数据结构之链表(c语言实现),将一个升序链表中插入一个元素,使原链表仍然升序

数据结构之链表(c语言实现) 题目:将一个升序链表中插入一个元素,使原链表仍然升序 #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node * next; }ElemSN;//定义结构体单元 ElemSN * createlink(int data[],int n)...

weixin_45558998的博客 3622

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7138

单链表 (反序,删除相同元素)

#include "stdafx.h" #include using namespace std; struct Node{ int data; Node* next; }; void init(Node*&L){ L = NULL; } void Create(Node*&L, int value) { if (L == NULL) { Node*p = new Node;

OneBaBa的专栏 651

ArcGIS供地图斑图形及属性入库操作(附练习数据)

已知数据: 供地图斑位置图。 供地图斑表格 成果要求:将供地图斑导入mdb数据库并将供地图斑表格的属性进行挂接。 接下来我们开始操作: 1、 打开arcmap,在目录内连接的文件夹内找到供地图斑位置图。图片 2、 将annotation和polygon添加到arcmap图片 3、 右击文件所在文件夹新建mdb数据库图片 4、 右击数据库新建要素数据集。(要素数据集非常重要,稍后所有操作都在数据集内进行)选择图斑投影方式及代号。图片 5、 右击要素数据集—导入(将图层内的数据导入数据库)图片 6、 数据导入.

qq_43173805的博客 8132

npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org的解决方案

本文主要介绍了npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org 的解决方案,希望能对使用npm的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 6万+

单链表插入删除排序

单链表插入删除排序

qq_34332125的博客 697

张力控制速度闭环控制算法

这个算法的核心思想是通过比较实际速度和期望速度的差异来调整控制信号,以达到稳定的速度控制。比例项用于直接根据误差调整输出,积分项用于积累误差并进行补偿,微分项用于预测误差的变化趋势并进行调整。张力控制是在许多工程和工业应用中非常重要的一个过程,它涉及到通过调节力的大小来实现稳定的工作状态。通过合理设置比例、积分和微分系数,并结合实际系统的特性进行调试和优化,可以实现准确稳定的张力控制。速度闭环控制算法通过比较实际速度和期望速度之间的差异,并根据差异调整系统的输出,以保持速度稳定。

LiJavascript的博客 1302

单链表 C++源码 构造 查找 插入 删除 反序 打印 头文件设定

分为三个文件 一个LinkList_test.h头文件,用于设定链表节点结构体,以及功能函数名称,存储内容结构体。 一个LinkList.cpp文件,用于实现各类功能函数。 一个main.cpp文件,用于运行。 IDE:CodeBlocks LinkList.h using namespace std; struct Info //存储数据结构体 { ...

Yuyao_Xu的博客 294

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

单链表的C++实现

简单用C++实现了单链表及其基本操作。 自身水平有限,如有错误,请大家指教。 /* / 内容:单链表C++实现 / 作者:phlixce / 时间:2017.5.25 */ #include #include #include using namespace std; typedef int ElemType; class LNode { public: ElemType da

Aiphlixce的博客 425

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

编程之美-从无头单链表中删除结点

void DeleteRandomNode(node *pCurrent) {//从无头单链表中删除结点 assert(pCurrent != NULL); node *pNext = pCurrent->next; if(pNext != NULL) { pCurrent->next = pNext->next; pCurrent->data = pNext->data;

hello2sys_cs的专栏 743

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c语言程序设计——单链表、双向链表、静态链表——软协第三周

指针与链表 单链表的基本概念 数组具有随机存储的优点,查询方便,然而插入删除效率低下,必须提前开辟固定大小的空间,此限制经常造成资源和空间浪费,因此我们可以想出一个办法在不移动其他数据的情况下实现数据的插入和删除,并且不用预先开辟空间,用多少开辟多少——链表 链表:保证数据的逻辑顺序不变得前提下,一种新的存储方式 数组访问元素的实质是通过地址计算实现的,而指针本身就是地址,因此我们考虑借助指针,也即是数据的地址来构造一种新的存储结构 数组是一种顺序的存储方式,即一段连续的存储空间存储数据,链表则不是按照逻辑

weixin_52253282的博客 686

数据结构之单链表的反序操作

实现单链表的反序有2种方法 第一种: 用3个指针分别指向前中后然后改变结点的指向其实挺绕的在这我就不介绍这种方法了 第二种: 利用栈 把所有结点放到栈里边然后再把虚拟头节点指向栈顶第一个元素之后让站内元素连接起来即可实现单链表的逆序操作 代码: public void reverse() { // 指向链表 Node prev = dummyHead.next; Stac...

686

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

双向链表前插入无需定位到节点的前一位,因为其本身有prior指针。从根本上来讲,它和单链表是类似的:#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; typedef struct student { int num; struct student *next; struct student *prior; }LDstudent...

IT8343的博客 5587

剑指offer:单链表的基本操作

时间久了,怕忘了,就写下来,算是一个回忆吧,这是常见的数据结构: #include typedef struct ListNode { int key; struct ListNode *next; }ListNode; ListNode *insertList(ListNode *head,int value); //创建一个单链表和向一个链表中插入元素,这里默认的是头插入

Jeff Li 1352

数据结构--线性表的链式存储结构(单链表完全实现)、单链表反转

线性表的链式存储结构 单链表节点类 public class Node<T> { //数据域,保存数据元素 public T data; //地址域,引用后继节点 public Node<T> next; public Node(){ this(null,null); } public Node...

吴声子夜歌的博客 838

单链表总结(JAVA)

总结了一下网上的常用链表操作(JAVA),然后每个操作都在自己本地跑过一遍,然后会自己写几个自己想到的链表操作,例如删除回环链表中的节点,以后就直接看自己整理的链表操作就可以拉 import java.util.ArrayList; import java.util.List; import java.util.Stack; public class LinkedList { public

内心毫无波动甚至还想笑的博客 583

单链表的实现

链表是有序的列表,但是在内存中存储图下图所示 链表是以 节点 的方式来存储,是 链式存储 每个节点包含 data 域、next 域,指向下一个节点 链表的各个节点 不一定是连续存储,如上图所示 链表还分:带头节点、不带头节点,根据实际需求来确定 上面进行了一个简单的介绍,下面分几部分来讲解 单链表 单链表(带头节点)逻辑结构 示意图如下,当下一个节点为 空 的时候,该链表就结束了 注意:是逻辑结构,前面说过,在内存中节点不是一个接一个的。 单链表的应用实例 虑这样一个场景:使用带

yqoneyear的博客 521

【面试笔记】【数据结构】单链表

1. 删除单链表中指针q指向的结点 2. 按值有序的单链表中插入结点 3. 将两个有序单链表归并 4. 单链表的逆置反序 5. 找出单链表中倒数第k个元素

Jibeon的学习之路 222

C 语言实例8——单链表 大综合(插入 删除 逆排序....)

#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; #include&lt;assert.h&gt; #define FALSE 0 #define TRUE 1 // 单链表声明 typedef struct NODE { struct NODE *link; i...

qq_27762895的博客 375
上一篇: 双向链表的建立和反序
devil27
博客等级 码龄19年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值