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

链表中出现的问题

代码

#include<iostream>
#include<stdexcept>
using namespace std;
#define eleType int
//节点的实现
struct listNode {eleType data;listNode* next;//数据域这里错了,初始化一直是0啊,无法改变//listNode(eleType x):data(0),next(NULL){}listNode(eleType x) :data(x), next(NULL) {}
};
//链表类:增删改查
class linkedList {
private:listNode* head;int size;
public:linkedList():head(NULL),size(0){}//这里由于实例化对象调用的是默认构造函数,所以第一个小括号里面不应该有参数//插入函数声明void insert(eleType value,int i);//删除函数声明void remove(int i);//查找函数声明listNode* find(eleType value);listNode* get(int i);//修改函数声明void update(eleType value, int i);//调试函数声明void print();~linkedList();
};
//析构函数->问题4
linkedList::~linkedList() {listNode* curr = head;while (curr) {listNode* temp = curr;curr = curr->next;delete temp;}
}
//插入函数
void linkedList::insert(eleType value,int i) {if (i<0 || i>size) {throw out_of_range("Invalid Position!");//问题1}listNode* newCode = new listNode(value);//问题2if (i == 0) {
//		listNode* curr = head;//这个指针多余了newCode->next = head;head = newCode;}else {listNode* curr = head;for (int j = 0; j < i - 1; j++) {curr = curr->next;}newCode->next = curr->next;curr->next = newCode;}size++;
}
//删除函数
void linkedList::remove(int i) {if (i<0 || i>size) {throw out_of_range("Invalid Position!");}if (i == 0) {listNode* curr = head;head = curr->next;delete curr;}else {listNode* curr = head;for (int j = 0; j < i - 1; j++) {curr = curr->next;}listNode* temp = curr->next;curr->next = temp->next;delete temp;}size--;
}
//查找函数
listNode* linkedList::find(eleType value) {//给值传数listNode* curr = head;while (curr && curr->data != value) {curr = curr->next;}return curr;
}
listNode* linkedList::get(int i) {//给数传值if (i<0 || i>size) {throw out_of_range("Invalid Position!");}listNode* curr = head;for (int j = 0; j < i; j++) {curr = curr->next;}return curr;
}
void linkedList::update(eleType value, int i) {if (i<0 || i>size) {throw out_of_range("Invalid Position!");}listNode* curr = head;for (int j = 0; j < i; j++) {curr = curr->next;}curr->data = value;
}
void linkedList::print() {listNode* curr = head;while (curr) {cout << curr->data << ' ';curr = curr->next;//这里要偏移指针遍历链表啊}cout << endl;
}
int main() {linkedList list;//问题3list.insert(10, 0);list.insert(20, 1);list.insert(30, 2);list.insert(40, 3);list.insert(50, 4);list.print();list.remove(0);list.print();list.update(666, 0);list.print();listNode* const temp = list.find(666);cout << temp->data << endl;cout << list.get(0)->data << endl;return 0;
}

反思

我想讲一下结构体和类里面的初始化列表:

listNode(eleType x) :data(x), next(NULL) {}

这个是结构体里面的初始化列表,由于每个节点都有数据域和指针域两个部分,所以初始化时包含这两个参数的初始化,而输入端输入的是数据域的值,所以类型也跟data保持一致。

linkedList():head(NULL),size(0){}//这里由于实例化对象调用的是默认构造函数,所以第一个小括号里面不应该有参数

这个是类里面的初始化列表,两个参数一个是头节点,一个是链表长度,暂时不需要从外部输入来确定他们的值,所以初始化为NULL和0,而且调用时为默认构造函数,则第一个小括号中就不用写东西啦。

http://www.dtcms.com/a/612011.html

相关文章:

  • 自助建站系统软件如何在网站做qq群链接
  • 热门的建设工程人员查询抖音seo招商
  • 成为创作者的第2048天
  • 设计类专业网站有哪些上海互联网网站建设公司
  • 怎么做视频解析网站吗wordpress完整替换网址
  • 基恩士PLC绝对值伺服“编码器计数值溢出“保护报警
  • 苏州企业建站程序手机网站建设要注意哪些问题
  • 宁波建设工程检测行业协会网站广告设计图片大全模板
  • 人工智能训练师备考——2.1.5题解
  • 如何做网站横幅东莞网站建设+信科网络
  • Linux隐藏窗口栏按钮
  • 浦口国家建设部网站个人无网站怎样做cps广告
  • 做网站指导展厅展示公司
  • 详细介绍colcon和ament的关系,以及它们在 ROS 2 构建系统中的角色和区别
  • 建设银行新乡分行城南支行网站网站建设与管理课程报告
  • 做直播哪个网站好php网站开发框架有哪些
  • 天津餐饮网站建设品牌成功案例100个
  • 建网站基础需要学什么做云教育集群网站
  • 几台服务器做集群网站新网站先做外链还是内容
  • 中国临海门户网站工程建设禹州做网站的公司
  • 辽宁网站备案企业网站展示
  • 17.【NXP 号令者RT1052】开发——实战-输入捕获
  • 网站的数据库选择网址我的上网主页
  • 百度突然搜不到网站网站建设可行性报告
  • 专业做设计的网站一个域名两个网站
  • 什么内容能提高网站流量wordpress手机端怎么用
  • 怎么做文化传播公司网站成华区微信网站建设公
  • 网站后台登入密码忘记了合肥科技网站建设
  • 13.vector(上)
  • 阿里云免费网站备案房地产基础知识300问