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

A (1087) : DS单链表--类实现

Description

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

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

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

注意:单链表不是数组,所以位置从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;int len;// 操作定义LinkList();~LinkList();ListNode *LL_index(int i);      // 返回第i个结点的指针,如果不存在返回NULLint LL_get(int i);              // 获取第i个元素的数据int LL_insert(int i, int item); // 把数值item插入第i个位置int LL_del(int i);              // 删除第i个结点void LL_display();              // 输出单链表的内容
};
LinkList::LinkList()
{head = new ListNode();len = 0;
}
LinkList::~LinkList()
{ListNode *p, *q;p = head;while(p != NULL){q = p;p = p->next;delete q;}len = 0;head = NULL;
}
void LinkList::LL_display()
{ListNode *p;p = head->next;while(p){cout << p->data << ' ';p = p->next;}cout << endl;
}

Input

  • 第1行先输入n表示有n个数据,接着输入n个数据
  • 第2行输入要插入的位置和新数据
  • 第3行输入要插入的位置和新数据
  • 第4行输入要删除的位置
  • 第5行输入要删除的位置
  • 第6行输入要查找的位置
  • 第7行输入要查找的位置

Output

数据之间用空格隔开,

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

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

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

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

Sample

 

 AC代码:

#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;int len;// 操作定义LinkList();ListNode* LL_index(int i) {};      // 返回第i个结点的指针,如果不存在返回NULLvoid LL_get(int i) {if (i <= 0 || i > len ) {cout << "error" << endl;}else {ListNode* p;p = head;for (int j = 0; j < i; j++) {p = p->next;}cout << p->data << endl;}};              // 获取第i个元素的数据void LL_insert(int i, int item) {if (i <= 0 || i > len + 1) {cout << "error" << endl;}else {ListNode* p;p = head;for (int j = 1; j < i; j++) {p = p->next;}ListNode* s = new ListNode;s->data = item;s->next = p->next;p->next = s;p = s;len++;LL_display();}}; // 把数值item插入第i个位置void LL_del(int i) {if (i <= 0 || i > len) {cout << "error" << endl;}else {ListNode* p;p = head;for (int j = 1; j < i; j++) {p = p->next;}p->next = p->next->next;LL_display();len--;}};              // 删除第i个结点void LL_display();              // 输出单链表的内容
};
LinkList::LinkList()
{head = new ListNode();len = 0;
}
void LinkList::LL_display()
{ListNode* p;p = head->next;while (p){cout << p->data << ' ';p = p->next;}cout << endl;
}int main() {int t;int data;cin >> t;LinkList L;ListNode* p;p = L.head;while (t--) {ListNode* s = new ListNode;L.len++;cin >> data;s->data = data;s->next = p->next;p->next = s;p = p->next;}L.LL_display();int i, item;cin >> i >> item;L.LL_insert(i, item);cin >> i >> item;L.LL_insert(i, item);cin >> i;L.LL_del(i);cin >> i;L.LL_del(i);cin >> i;L.LL_get(i);cin >> i;L.LL_get(i);
}

http://www.lryc.cn/news/185778.html

相关文章:

  • 异常:找不到匹配的key exchange算法
  • Arcgis打开影像分析窗口没反应
  • Spring(JavaEE进阶系列1)
  • Flink状态管理与检查点机制
  • 【threejs】基本编程概念及海岛模型展示逻辑
  • python小技巧:创建单链表及删除元素
  • ADuM1250 ADuM1251 模块 I2C IIC总线2500V电磁隔离 接口保护
  • C# 把多个dll合成一个dll
  • scipy.sparse.coo_matrix.sum()关于axis的用法
  • C++类与对象(下)
  • SpringBoot——》引入Redis
  • C# newtonsoft序列化将long类型转化为字符串
  • 黑马点评-02使用Redis代替session,Redis + token机制实现
  • arm 点灯实验代码以及现象
  • 选择适合普通公司的项目管理软件
  • E (1081) : DS堆栈--逆序输出(STL栈使用)
  • 访问者模式 行为型设计模式之九
  • JVM垃圾回收之JVM GC算法探究
  • Django 前端模板显示换行符、日期格式
  • Aurora中的策略模式和模板模式
  • Ubuntu 22.04 安装系统 手动分区 针对只有一块硬盘 lvm 单独分出/home
  • Android系统定制之监听USB键盘来判断是否弹出软键盘
  • LeakyReLU激活函数
  • Qt单一应用实例判断
  • 企业AI工程化之路:如何实现高效、低成本、高质量的落地?
  • 最短路径专题8 交通枢纽 (Floyd求最短路 )
  • 文件扫描模块
  • MySQL之主从复制
  • [leetcode 单调栈] 901. 股票价格跨度 M
  • Java线程池:并发编程的利器