【数据结构/C++】线性表_单链表的基本操作

image.png

image.png

image.png

#include <iostream>
using namespace std;
// 2. 单链表
// ElemType 的定义
typedef int ElemType;
typedef struct LNode
{ElemType data;struct LNode *next;
} LNode, *LinkList;
// 初始化单链表
bool InitList(LinkList &L)
{L = (LNode *)malloc(sizeof(LNode));// 内存不足,分配失败if (L == NULL){return false;}L->next = NULL;return true;
}
// 在第 i 个位置插入元素
bool ListInsert(LinkList &L, int i, ElemType e)
{if (i < 1){return false;}// 指针 p 指向当前扫描到的结点LNode *p = L;// 当前p指向第几个结点int j = 0;// L 指向头结点,头结点是第 0 个结点p = L;while (p != NULL && j < i - 1){p = p->next;j++;}// i 不合法if (p == NULL){return false;}LNode *s = (LNode *)malloc(sizeof(LNode));s->data = e;s->next = p->next;p->next = s;return true;
}
// 删除第 i 个元素
bool ListDelete(LinkList &L, int i, ElemType &e)
{if (i < 1){return false;}LNode *p = L;int j = 0;p = L;while (p != NULL && j < i - 1){p = p->next;j++;}if (p == NULL){return false;}if (p->next == NULL){return false;}// q 指向被删除的结点LNode *q = p->next;// e 来接收返回的删除值e = q->data;p->next = q->next;free(q);return true;
}
// 遍历单链表
void ListTraverse(LinkList L)
{LNode *p = L->next;while (p != NULL){cout << p->data << " ";p = p->next;}cout << endl;
}
// 将单链表逆置
void ReverseList(LinkList &L)
{// LNode *p = L->next;LNode *q = NULL;LNode *r = NULL;L->next = NULL;while (p != NULL){// 头插法(相当于原单链表这个队列不断取出每一个元素向新的链表头插入)// q 指向新链表的头// p 指向正在操作的某个结点// r 暂存下一个将要操作的结点q = L->next;L->next = p;r = p->next;p->next = q;p = r;}
}int main()
{LinkList L;InitList(L);for (int i = 1; i <= 10; i++){ListInsert(L, i, i);}ListTraverse(L);ReverseList(L);ListTraverse(L);ReverseList(L);ElemType e;ListDelete(L, 3, e);ListTraverse(L);ListDelete(L, 1, e);ListTraverse(L);return 0;
}

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

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

相关文章

支持向量机回归预测SVR——MATLAB超详细代码实现过程

本文主要针对支持向量机回归预测在MATLAB中的实现过程进行陈述&#xff0c;方便读者可以快速上手实现SVR回归预测&#xff0c;对支持向量机的原理将不再进行陈述。在MATLAB中实现相关向量机回归预测主要是调用MATLAB自带的SVR工具箱&#xff0c;所以了解工具箱的相关参数的基本…

【UE5】五大基类及其使用

UObject UObject表示对象&#xff0c;准确来说&#xff0c;虚幻引擎中的对象基础类为UObject UObject提供了以下功能&#xff1a; 垃圾收集&#xff08;Garbage collection&#xff09;引用自动更新&#xff08;Reference updating&#xff09;反射&#xff08;Reflection&am…

基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)

音乐盒 主要功能&#xff1a;仿真原理图PCB图程序设计&#xff1a;设计报告实物图资料清单&#xff08;提供资料清单所有文件&#xff09;&#xff1a;资料下载链接&#xff1a; 基于51单片机音乐盒仿真设计( proteus仿真程序原理图PCB报告讲解视频&#xff09; 仿真图proteus …

Redis的性能,哨兵模式,集群,

Redis的性能管理; redis的数据保存在内存中 redis-cli info memory redis内存使用info memory命令参数解析 used_memory:236026888 由 Redis 分配器分配的内存总量&#xff0c;包含了redis进程内部的开销和数据占用的内存&#xff0c;以字节&#xff08;byte&#xff09…

JS中的OOP

JS中的OOP OOP 为我们解决了什么问题&#xff1f;想象一下&#xff0c;我们希望为教师提供一个平台&#xff0c;每位注册的教师都可以提交分数&#xff0c;并为课程分配作业和其他内容。 如果有一个地方&#xff08;在本例中是一个对象&#xff09;&#xff0c;可以访问所有教…

android keylayout键值适配

1、通过getevent打印查看当前keyevent数字对应事件和物理码 2、dumpsys input 查看输入事件对应的 KeyLayoutFile: /system/usr/keylayout/Vendor_6080_Product_8060.kl 3、通过物理码修改键值映射&#xff0c;修改/system/usr/keylayout/目录下的文件

Docker可视化管理界面工具Portainer安装

Portainer是Docker容器管理界面工具&#xff0c;可以直观的管理Docker。 部署也很简单&#xff1a; 官方安装文档地址 1、创建数据卷 docker volume create portainer_data2、下载允许容器 docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restartalways -v /v…

归并排序算法

文章目录 归并排序一、归并排序思路二、归并排序算法模板三、题目代码 归并排序 一、归并排序思路 二、归并排序算法模板 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;//中间值merge_sort(q, l, mid);merge_sort(q, mid 1, r);…

程序环境和预处理(详解版)

我们已经学到这里&#xff0c;这就是关于C语言的最后一个集中的知识点了&#xff0c;虽然它比较抽象&#xff0c;但是了解这部分知识&#xff0c;可以让我们对C代码有更深层次的理解&#xff0c;知道代码在每一个阶段发生什么样的变化。让我们开始学习吧! 目录 1.程序的翻译环…

Flutter学习(四)如何取消listview的越界效果

背景 在flutter的开发过程中&#xff0c;ListView是很常见的一个组件&#xff0c;但是&#xff0c;由于ListView的某些自带的体验&#xff0c;导致不太好的用户体验。例如ListView中&#xff0c;滑动到顶部或者底部的时候&#xff0c;再次滑动&#xff0c;会有越界的效果&…

C语言——从键盘输人一个表示年份的整数,判断该年份是否为闰年,并显示判断结果。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int year 0;printf("请输入年份&#xff1a;");scanf("%d",&year);if((year%4 0) && (year%100!0) || (year%400 0)){printf("%d是闰年\n",year);}else{p…

Python+jieba+wordcloud实现文本分词、词频统计、条形图绘制及不同主题的词云图绘制

目录 序言&#xff1a;第三方库及所需材料函数模块介绍分词词频统计条形图绘制词云绘制主函数 效果预览全部代码 序言&#xff1a;第三方库及所需材料 编程语言&#xff1a;Python3.9。 编程环境&#xff1a;Anaconda3&#xff0c;Spyder5。 使用到的主要第三方库&#xff1a;…