当前位置: 首页 > news >正文

【id:21】【20分】A. DS单链表--类实现

题目描述

用C++语言和类实现单链表,含头结点

属性包括:data数据域、next指针域

操作包括:插入、删除、查找

注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据

类定义参考

输入

n

第1行先输入n表示有n个数据,接着输入n个数据

第2行输入要插入的位置和新数据

第3行输入要插入的位置和新数据

第4行输入要删除的位置

第5行输入要删除的位置

第6行输入要查找的位置

第7行输入要查找的位置

输出

n

数据之间用空格隔开,

第1行输出创建后的单链表的数据

每成功执行一次操作(插入或删除),输出执行后的单链表数据

每成功执行一次查找,输出查找到的数据

如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出单链表

样例查看模式

正常显示查看格式

输入样例1 <-复制

输出样例1

语言: 编译选项

主题:

#include<iostream>
using namespace std;
#define ok 0;
#define error -1;class ListNode
{
public:int data;ListNode* next;ListNode(){next = NULL;}
};class LinkList
{
public:ListNode* head;//listcode类型的指针int len;LinkList(){head = new ListNode();len = 0;//表示整个链表的长度}~LinkList(){ListNode* p, * q;p = head;//定义一个空指针先指向第一个节点的地址while (p != NULL){q = p;//指针q指向指针pp = p->next;//p往后移一位delete q;//删除前面那个指针//直到删除到p为空指针为止}len = 0;head = NULL;}ListNode* LL_index(int i)//返回第i个节点的指针,如果不存在则返回NULL{if (i-1>len||i<=0){return NULL;}else{ListNode* p;p = head->next;for(int j=1;j<i;j++){p = p->next;//指向后一个元素}return p;}}int LL_get(int i){if (i > len || i <= 0){return error;}else{ListNode* p;p = head->next;for (int j = 1; j < i; j++){p = p->next;//指向后一个元素}return p->data;}}int LL_insert(int i, int item){if (i - 1 > len || i <= 0){return error;}else{ListNode* pre=head, * new1, * after;ListNode* p = head->next;for (int j = 1; j < i; j++){pre = p;//要得到转换的前一个位置p = p->next;//p往后一位}new1 = new ListNode();new1->data = item;new1->next = p;pre -> next = new1;len++;return ok;}}int LL_del(int i){if (i - 1 > len || i <= 0){return error;}else{//完全可以直接指向后两个,直接跳过后面的一个来实现删除,//但是代表删除的元素,将会永远存在,并且无法找回并删除ListNode* p, * pre=head, * after;p = head->next;for (int j = 1; j < i; j++){pre = p;//同样记录前面一个位置p = p->next;}after = p->next;//用after记录后一个位置p = NULL;pre->next = after;len--;return ok;}}void LL_display(){ListNode* p;p = head -> next;while (p){cout << p->data << ' ';p = p->next;}cout << endl;}};
int main()
{LinkList p;int num;int lenth;cin >> lenth;for (int i = 1; i <= lenth; ++i){cin >> num;p.LL_insert(i, num);}p.LL_display();for (int i = 0; i < 2; ++i){cin >> lenth >> num;if (p.LL_insert(lenth, num)==0){p.LL_display();}else{cout << "error" << endl;}}for (int i = 0; i < 2; ++i){cin >> lenth;if (p.LL_del(lenth)==0){p.LL_display();}else{cout << "error" << endl;}}for (int i = 0; i < 2; ++i){int num;cin >> lenth;if (p.LL_get(lenth) >= 0){cout << p.LL_get(lenth) << endl;}else{cout << "error" << endl;}}return 0;
}
http://www.lryc.cn/news/38058.html

相关文章:

  • 【实习_面试全程辅导分享】简历篇
  • 【学习笔记】CF1305 Kuroni and Antihype
  • json-server单独使用或者在react中进行使用
  • 【6G 新技术】6G数据面介绍
  • 【AI绘图学习笔记】深度前馈网络(一)
  • 目标检测笔记合集
  • 《计算机网络》期末复习笔记
  • linux下安装SonarQube
  • MyBatis-Plus(狂神)
  • Python3实现写作
  • UEFI实战--------HII之uni文件
  • 基于Spring Boot集成MyBatis-3.5.9操作数据库
  • 了解国外SEO负面压制的现状与应对策略!
  • Yolov5-交通标志检测与识别
  • Linux内核Thermal框架详解五、Thermal Core(4)
  • gcc 编译的过程
  • Hadoop入个门
  • python 从0到批量下载某站视频
  • 【深度学习】神经网络和深度学习--卷积和池化的作用
  • 锦正茂风冷系列电源JCP-10-80的技术参数
  • Idea+maven+spring-cloud项目搭建系列--11-1 dubbo(zookeeper,nacos)注册中心
  • Python3入门教程||Python3 迭代器与生成器||Python3 函数
  • 快速幂算法
  • Hudi:问题总结(2)Flink-1.13.1消费kafka并插入hudi
  • Application工具方法
  • 电脑游戏怎么录屏?其实很简单,只需要简单3步
  • 【设计模式】go语言中的 [函数选项,单例,工厂,责任链] 常用的设计模式
  • 2017系统分析师案例分析真题背记内容
  • C++和C的区别
  • 【React教程】一、React简介