【数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】

ops/2024/12/19 20:37:06/

目录😋

任务描述

相关知识

测试说明

我的通关代码:

测试结果:


任务描述

本关任务:编写一个程序实现单链表的基本运算。

相关知识

为了完成本关任务,你需要掌握:初始化线性表、销毁线性表、判定是否为空表、求线性表的长度、输出线性表、求线性表中某个数据元素值、按元素值查找、插入数据元素、删除数据元素等。

测试说明

平台会对你编写的代码进行测试:

测试输入:
3
4

预期输出:

(1)初始化单链表h
(2)依次采用尾插法插入a,b,c,d,e元素
(3)输出单链表h:a b c d e
(4)单链表h长度:5
(5)单链表h为非空
(6)单链表h的第3个元素:c
(7)元素a的位置:1
(8)在第4个元素位置上插入f元素
(9)输出单链表h:a b c f d e
(10)删除h的第3个元素
(11)输出单链表h:a b f d e
(12)释放单链表h

开始你的任务吧,祝你成功!


我的通关代码:


#include <iostream>#include <string>
using namespace std;
#define MAX_SIZE 100typedef char ElemType;typedef struct {ElemType data[MAX_SIZE];int length;
} SeqList;void InitList(SeqList &L) { L.length = 0; }void PrintList(SeqList L) {for (int i = 0; i < L.length; i++) {cout << L.data[i] << " ";}cout << endl;
}
int InsertList(SeqList *L, int i, ElemType e) {if (i < 1 || i > L->length + 1 || L->length >= MAX_SIZE)return 0;for (int j = L->length; j >= i; j--) {L->data[j] = L->data[j - 1];}L->data[i - 1] = e;L->length++;return 1;
}bool GetElem(SeqList L, int i, ElemType &e) {if (i < 1 || i > L.length)return false;e = L.data[i - 1];return true;
}int LocateElem(SeqList L, ElemType e) {for (int i = 0; i < L.length; i++) {if (L.data[i] == e)return i + 1;}return 0;
}bool ListInsert(SeqList &L, int i, ElemType e) {if (i < 1 || i > L.length + 1)return false;for (int j = L.length; j >= i; j--) {L.data[j] = L.data[j - 1];}L.data[i - 1] = e;L.length++;return true;
}bool ListDelete(SeqList &L, int i, ElemType &e) {if (i < 1 || i > L.length)return false;e = L.data[i - 1];for (int j = i; j < L.length; j++) {L.data[j - 1] = L.data[j];}L.length--;return true;
}int main() {SeqList L;InitList(L);int pos1, pos2;cin >> pos1 >> pos2;cout << "(1)初始化单链表h" << endl;char elements[] = {'a', 'b', 'c', 'd', 'e'};for (int i = 0; i < 5; i++) {InsertList(&L, i + 1, elements[i]);}cout << "(2)依次采用尾插法插入a,b,c,d,e元素" << endl;cout << "(3)输出单链表h:";PrintList(L);cout << "(4)单链表h长度:" << L.length << endl;cout << "(5)单链表h为非空" << endl;ElemType e;if (GetElem(L, pos1, e)) {cout << "(6)单链表h的第" << pos1 << "个元素:" << e << endl;}int pos = LocateElem(L, 'a');cout << "(7)元素a的位置:" << pos << endl;ListInsert(L, pos2, 'f');cout << "(8)在第" << pos2 << "个元素位置上插入f元素" << endl;cout << "(9)输出单链表h:";PrintList(L);ListDelete(L, pos1, e);cout << "(10)删除h的第" << pos1 << "个元素" << endl;cout << "(11)输出单链表h:";PrintList(L);cout << "(12)释放单链表h";return 0;
}

测试结果:

在这里插入图片描述


http://www.ppmy.cn/ops/143281.html

相关文章

Elasticsearch 集群快照的定期备份设置指南

Elasticsearch 集群快照的定期备份设置指南 概述 快照&#xff1a; 在给定时刻对整个集群或者单个索引进行备份&#xff0c;以便在之后出现故障时可以基于之前备份的快照进行快速恢复。 前提条件&#xff1a; 准备一个备份存储盘&#xff0c;本指南采用的是AWS EFS文件系统做…

uniapp 微信小程序 均分数据展示

效果图 数据展示&#xff0c;可自行搭配 html <view class"num-wrapper"><view class"num-item" click.stop"routerGo(跳转的地址)"><text class"num">&#xffe5;{{ 要展示的数据 || 0}}</text><view…

软件包git没有可安装候选

‌在Ubuntu系统中安装git时出现“软件包git没有可安装候选”的错误&#xff0c;通常是因为软件源列表未更新或软件包信息不完整。‌ 解决方法 ‌更新软件源‌&#xff1a;首先&#xff0c;确保你的系统软件源是最新的。可以通过以下命令更新软件源&#xff1a; sudo apt-get u…

微积分复习笔记 Calculus Volume 2 - 4.2 Direction Fields and Numerical Methods

4.2 Direction Fields and Numerical Methods - Calculus Volume 2 | OpenStax

回型矩阵:JAVA

解题思路&#xff1a; 通过定义四条边界&#xff1b;top,left,right,bottom,来循环&#xff0c;当top>bottom&&left>right的时候循环终止 循环结束的条件&#xff1a; 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述…

Spring(二)AOP、切入点表达式、AspecJ常用通知的类型、Spring中的事务管理

文章目录 一、AOP 1、定义 2、特点 3、AOP中的术语&#xff08;连接点、切入点、通知、目标、代理&#xff09; 4、配置 &#xff08;1&#xff09;下载AOP相关jar &#xff08;2&#xff09;启动AspectJ支持 5、使用 6、切入点表达式 7、AspecJ常用通知的类型 &…

二、windows环境下vscode使用wsl教程

本篇文件介绍了在windows系统使用vscode如何连接使用wsl&#xff0c;方便wsl在vscode进行开发。 1、插件安装 双击桌面vscode&#xff0c;按快捷键CtrlShiftX打开插件市场&#xff0c;搜索【WSL】点击安装即可。 2、开启WSL的linux子系统 点击左下方图标【Open a Remote Win…

linux 免密远程到多个服务器如何实现

要实现从主机 192.168.1.2 免密远程连接到 192.168.1.3 和 192.168.1.4&#xff0c;您可以使用 SSH 密钥对进行身份验证。以下是详细的步骤&#xff1a; 步骤 1&#xff1a;生成 SSH 密钥对 在 192.168.1.2 主机上生成 SSH 密钥对&#xff08;如果您尚未生成过&#xff09;&a…