实验3-单链表(优化版/王道版)

单链表结构体

typedef int ElemType;
typedef struct LNode{ElemType data;struct LNode *next;
}LNode,* LinkList;

单链表的初始化

void InitList(LinkList &L)
{L=new LNode;L->next=NULL;
}

打印单链表

void visit(LinkList L)
{L=L->next;while(L){cout<<L->data<<" ";L=L->next;}cout<<endl;
}

头插法建表

void HeadInsert(LinkList &L)
{InitList(L);LinkList p=NULL;ElemType e;cin>>e;while(e!=9999){p=new LNode;p->data=e;p->next=L->next;L->next=p;cin>>e;}
}

尾插法建表

void TailInsert(LinkList &L)
{InitList(L);LinkList p;LinkList r=L;ElemType e;cin>>e;while(e!=9999){p=new LNode;p->data=e;r->next=p;r=p;cin>>e;}r->next=NULL;
}

求表长操作

int Length(LinkList L)
{int len=0;L=L->next;while(L){len++;L=L->next;}return len;
}

按位查找结点

LinkList GetElem(LinkList L,int i)
{if(i<0) return NULL;int j=0;while(L && j<i){L=L->next;j++;}return L;
}

按值查找结点

LinkList LocateElem(LinkList L,ElemType e)
{L=L->next;while(L && L->data!=e) L=L->next;return L;
}

插入结点

bool ListInsert(LinkList &L,int i,ElemType e)
{LinkList p=GetElem(L,i-1);if(p==NULL) return false;LinkList s=new LNode;s->data=e;s->next=p->next;p->next=s;return true;
}

删除结点

bool ListDelete(LinkList &L,int i,ElemType &e)
{LinkList p=GetElem(L,i-1);if(p==NULL || p->next==NULL) return false;LinkList s=p->next;e=s->data;p->next=s->next;delete s;return true;
}

main函数

int main()
{LinkList L;ElemType e;HeadInsert(L);//5 4 3 2 1 9999
//	TailInsert(L);//1 2 3 4 5 9999visit(L);cout<<"len:"<<Length(L)<<endl;cout<<"elem:"<<GetElem(L,5)->data<<endl;cout<<"pos:"<<LocateElem(L,5)<<endl;ListInsert(L,6,6);visit(L);ListDelete(L,6,e);visit(L);return 0;
}

完整代码

	#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LNode,* LinkList;void InitList(LinkList &L){L=new LNode;L->next=NULL;}void visit(LinkList L){L=L->next;while(L){cout<<L->data<<" ";L=L->next;}cout<<endl;}void HeadInsert(LinkList &L){InitList(L);LinkList p=NULL;ElemType e;cin>>e;while(e!=9999){p=new LNode;p->data=e;p->next=L->next;L->next=p;cin>>e;}}void TailInsert(LinkList &L){InitList(L);LinkList p;LinkList r=L;ElemType e;cin>>e;while(e!=9999){p=new LNode;p->data=e;r->next=p;r=p;cin>>e;}r->next=NULL;}int Length(LinkList L){int len=0;L=L->next;while(L){len++;L=L->next;}return len;}LinkList GetElem(LinkList L,int i){if(i<0) return NULL;int j=0;while(L && j<i){L=L->next;j++;}return L;}LinkList LocateElem(LinkList L,ElemType e){L=L->next;while(L && L->data!=e) L=L->next;return L;}bool ListInsert(LinkList &L,int i,ElemType e){LinkList p=GetElem(L,i-1);if(p==NULL) return false;LinkList s=new LNode;s->data=e;s->next=p->next;p->next=s;return true;}bool ListDelete(LinkList &L,int i,ElemType &e){LinkList p=GetElem(L,i-1);if(p==NULL || p->next==NULL) return false;LinkList s=p->next;e=s->data;p->next=s->next;delete s;return true;}int main(){LinkList L;ElemType e;HeadInsert(L);//5 4 3 2 1 9999//	TailInsert(L);//1 2 3 4 5 9999visit(L);cout<<"len:"<<Length(L)<<endl;cout<<"elem:"<<GetElem(L,5)->data<<endl;cout<<"pos:"<<LocateElem(L,5)<<endl;ListInsert(L,6,6);visit(L);ListDelete(L,6,e);visit(L);return 0;}

输出示例

5 4 3 2 1 9999
1 2 3 4 5
len:5
elem:5
pos:0xc56a20
1 2 3 4 5 6
1 2 3 4 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java02】Java中数组的定义与初始化

Java中的数组&#xff08;1&#xff09; 1. 理解Java中的数组 Java中的数组是一种数据类型&#xff0c;具体来说&#xff0c;是一种引用类型。 例如int是基本类型&#xff0c;int[]是引用类型。 创建int[]类型的对象&#xff08;实例&#xff09;&#xff0c;实际上就是创建…

【Python】使用pip安装seaborn sns及失败解决方法与sns.load_dataset(“tips“)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

Linux: ubi rootfs 故障案例 (2)

文章目录 1. 前言2. ubi rootfs 故障现场3. 问题解决4. 问题分析5. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. ubi rootfs 故障现场 内核故障日志如下&#xff1a; ...... [ …

《python程序语言设计》2018版第5章第35题求完全数,解题经历,我认为的正确代码放在最后

5.35从4月开始一直到成功&#xff0c;此文章将所有的记录和不同阶段代码展现给大家。但是没有配图&#xff0c;我最后成功的代码放在了最后。 2024.04.15 05.35.01version 求完整数&#xff0c;这个让我突然有点蒙。我什么时候能求完整数呢&#xff1f;&#xff1f; 正因子之和…

c++手写的bitset

支持stl bitset 类似的api #include <iostream> #include <vector> #include <climits> #include <utility> #include <stdexcept> #include <iterator>using namespace std;const int W 64;class Bitset { private:vector<unsigned …

vue+jave实现文件报表增加文件下载功能

需求背景:系统有文件交互功能。但没有做页面展示。为了测试方便&#xff0c;写了报表展示并可下载文件做检查。(所以下载是依赖表数据的) 使用语言和框架: 前端:vue-cli 后端:springBoot 前端实现 1、在报表vue文件&#xff0c;显示下载按钮并实现下载接口请求和处理。 //报…

网络分析(ArcPy)

一.前言 GIS中的网络分析最重要的便是纠正拓扑关系&#xff0c;建立矫正好的网络数据集&#xff0c;再进行网络分析&#xff0c;一般大家都是鼠标在arcgis上点点点&#xff0c;今天说一下Arcpy来解决的方案&#xff0c;对python的要求并不高,具体api参数查询arcgis帮助文档即可…

JavaScript 使用优先级队列的霍夫曼编码(Huffman Coding using Priority Queue)

先决条件&#xff1a; 贪婪算法 | (霍夫曼编码)、priority_queue::push() 和 C STL 中的 priority_queue::pop() 。 贪婪算法 | (霍夫曼编码)&#xff1a; C#&#xff1a;C# 霍夫曼编码 | 贪婪算法&#xff08;Huffman Coding | Greedy Algo&#xff09;-CSDN博客 JavaScr…

Java数组的定义 ,基本概念与使用

数组的定义 1.问题:想将一个数据保存起来,我们可以使用变量,但是变量一次只能存储一个数据,所以我们想能不能一次存多个数据2.数组概述:是一个容器,数组本身属于引用数据类型3.作用:一次存储多个数据4.特点:a.既可以存储基本类型的数据,还能存储引用类型的数据b.定长(定义数组…

【设计模式】结构型设计模式之 桥接模式

一、 介绍 桥接模式在《设计模式 可复用面向对象软件的基础》中定义为&#xff1a;将抽象和现实解耦&#xff0c;让他们可以独立变化。上面的定义比较难以理解&#xff0c;换个通俗的说法&#xff1a;一个类存在两个或多个独立变化的维度&#xff0c;通过组合的方式让这个类在…

C++设计模式---观察者模式

1、介绍 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时&#xff0c;它的所有依赖者&#xff08;观察者&#xff09;都会自动…

【Android面试八股文】一图展示 Android生命周期:从Activity到Fragment,以及完整的Android Fragment生命周期

图片来源于&#xff1a;https://github.com/xxv/android-lifecycle Android生命周期&#xff1a;从Activity到Fragment 图&#xff1a;android-lifecycle-activity-to-fragments.png 完整的Android Fragment生命周期 图&#xff1a;complete_android_fragment_lifecycle.png…

人脸考勤项目实训

第一章 Python-----Anaconda安装 文章目录 第一章 Python-----Anaconda安装前言一、Anaconda是什么&#xff1f;二、Anaconda的前世今生二、Windows安装步骤1.官网下载2.安装步骤安装虚拟环境 总结 前言 工欲善其事必先利其器&#xff0c;项目第一步&#xff0c;安装我们的环境…

如何使用Python pottery库

要使用Python的Pottery库,你需要按照以下步骤进行: 你可以通过pip工具来安装Pottery库。打开终端或命令提示符,输入以下命令: pip install pottery 安装完成后,你就可以开始使用Pottery库了。 在你的Python脚本中,首先需要导入Pottery库。通常,你会从pottery模块中导…

Django ListView 列表视图类

ListView是Django的通用视图之一&#xff0c;它用于显示一个对象列表。这个视图将所有的对象作为一个上下文变量传递给模板。 1&#xff0c;创建应用 python manage.py startapp app3 2&#xff0c;注册应用 Test/Test/settings.py Test/Test/urls.py 3&#xff0c;添加模型 …

【EDA】SSTA中最慢路径与最快路径统计计算

假设(X1,X2)为二元高斯随机向量,均值(μ1,μ2),标准差(σ1,σ2),相关系数ρ 定义:X=max(X1,X2),Y=min(X1,X2) SSTA中计算setup/hold的worst delay时即求X、Y,路径N对应维度为N维。 X的概率密度函数PDF为f(x)=f1(-x)+f2(-x),f1和f2为: 其中小Φ和大Φ…

牛客题目数据结构

做过线段树2模板大概可以写出一部分代码&#xff0c;这题主要关键点是怎么维护平方和 借图了 这样处理完maketag的代码就出来了 void maketag(int id,int l,int r,ll v,int opt){if(opt1){seg[id].val*v;seg[id].pfval*(v*v);seg[id].mul*v;seg[id].add*v;}else{seg[id].pfva…

仓库管理业务在WMS与ERP中如何抉择

当然&#xff0c;以下是WMS&#xff08;仓库管理系统&#xff09;与ERP&#xff08;企业资源计划&#xff09;系统在仓库管理中的主要区别和各自的优势的整理&#xff1a; 一、主要区别&#xff1a; 1. 功能范围&#xff1a; - WMS&#xff1a;专注于仓库内部运作&#xff0c;…

【机器学习】决策树模型(个人笔记)

文章目录 多样性指标基尼杂质指数&#xff08;Gini Impurity Index&#xff09;熵&#xff08;Entropy&#xff09; 决策树的应用 源代码文件请点击此处&#xff01; 多样性指标 基尼杂质指数&#xff08;Gini Impurity Index&#xff09; 若集合中包含 m m m 个元素和 n …

LeetCode1318或运算的最小翻转次数

题目描述 给你三个正整数 a、b 和 c。你可以对 a 和 b 的二进制表示进行位翻转操作&#xff0c;返回能够使按位或运算 a OR b c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。 解析 这一题就按位依次比较就行了。取这…