从0开始的数据结构的书写-------线性表(单链表)

devtools/2024/11/15 19:31:55/

(复习考研的休息区,心血来潮,写点代码)

三个规则:

1、不使用c++ stl库进行书写

2、最好基于严蔚敏老师的数据结构

3、最好使用malloc和realloc动态分配内存

(如果有问题或者是有没有实现的操作,请大家提出来)

// 链表实现 
#include<iostream>
#include<cstring>using namespace std;#define N 100
#define OK true 
#define ERRORINT 0x3f3f3f3f3f
#define ERROR falsetypedef struct LNode
{// 单链表 int data;struct LNode *ne;
}LNode , *LinkList;void InitList(LinkList &L)
{L = (LinkList)malloc(sizeof(LNode));L -> ne = NULL; // 建立带头节点的单链表 
}// 头插法 
void HeadInsert(LinkList &L)
{for(int i = 1;i <= 10;i ++){LinkList p = (LinkList)malloc(sizeof(LNode));p -> data = i;p -> ne = L -> ne;L -> ne = p;}
} // 尾插法
void TailInsert(LinkList &L)
{LinkList now = L;for(int i = 1;i <= 10;i ++){LinkList p = (LinkList)malloc(sizeof(LNode));p -> data = i;now -> ne = p;now = p;}now -> ne = NULL;
} // 插入到第idx位置 
bool InsertList(LinkList &L , int idx , int e)
{LinkList p = L;int i = 0;while(p && i < idx - 1) {p = p -> ne;i ++;}if(!(p -> ne) || i > idx - 1) return ERROR;cout << "插入数据" << e << endl; LinkList s = (LinkList) malloc(sizeof(LNode));s -> data = e;s -> ne = p -> ne;p -> ne = s;return OK;
}// 删除节点 
int DeleteList(LinkList &L , int idx)
{LinkList p = L;int i = 0;while(p && i < idx - 1){p = p -> ne;i ++;}if(!p || i > idx - 1) return ERROR;int e = p -> ne -> data;cout << "删除节点" << e << endl; p -> ne = p -> ne -> ne;return e;
}void print(LinkList L)
{LinkList p = L;cout << "当前链表数据为:";p = p -> ne;bool f = false;while(p){if(f) cout << "->";cout << p -> data;f = true;p = p -> ne;}cout << endl;
}int main()
{LinkList L;InitList(L);// HeadInsert(L);// print(L)TailInsert(L);print(L);InsertList(L , 3 , 11);InsertList(L , 5 , 12);print(L);DeleteList(L , 6);DeleteList(L , 3);print(L);return 0;
}


http://www.ppmy.cn/devtools/26127.html

相关文章

面试准备之手写9种排序算法(默认从小到大排序)之插入排序、冒泡排序、选择排序、希尔排序

插入排序 第一重循环下标从1到n-1&#xff0c;一是表示插入轮数&#xff0c;而是为下一重循环nums[j]和nums[j - 1]比较并交换&#xff08;nums[j]>nums[j-1]时&#xff09;做准备&#xff0c;再有就是下一重循环是逆向进行&#xff0c;由于之前的下标在之前的循环中已经经…

力扣刷题之准备工作

目录 一、力扣是什么&#xff1f; 1.1 概念 1.2 为什么要刷LeetCode题 1.3 LeetCode与其他OJ的异同点 二、LeetCode新手入门 2.1 LeetCode 注册 2.2 LeetCode 题库 2.2.1 题目标签 2.2.2 题目列表 2.2.3 当前进度 2.2.4 题目详情 2.3 LeetCode 刷题语言 2.4 Lee…

线上线下交友陪玩,支持小程序/app/h5三端打包,源码搭建!

社交APP定制开发的好处&#xff1a; 社交APP定制开发能够根据用户需求进行个性化定制&#xff0c;满足用户对于社交功能的特殊需求。不同用户对社交的理解和需求各不相同&#xff0c;定制开发可以根据用户的要求&#xff0c;提供更加个性化和专属的社交功能&#xff0c;为用户…

Shell脚本学习记录

0.理解Linux文件权限 0.1 Linux安全性 用户的权限是通过创建用户时分配的用户ID(UID)来追踪的&#xff0c;UID是个数值&#xff0c;每个用户都有一个唯一的UID 0.1.1 /etc/passwd文件 Linux系统使用一个专门的文件/etc/passwd来匹配登录名与对应的UID值&#xff0c;该文件包…

【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第九篇&#xff1a;MyBatis-Plus用法介绍。 在 MyBatis-Plus 3.5.0 中&#xff0c;LambdaQueryWrapper支持多种条件构造方式&#xff0c;除了等于&#xff08;eq&#xff09;、不等于&#xff08;ne&#xff09;、大于&a…

国家开放大学2024年春《Matlab语言及其应用》实验一熟悉Matlab 操作环境参考答案

实验报告 姓名&#xff1a; 学号&#xff1a; 实验一名称&#xff1a;熟悉 Matlab 操作环境 实验目标&#xff1a;通过简单变量和矩阵的录入、计算和查看相关信息&#xff0c;了解 Matlab 操作界面 及各子窗口使用方法。熟悉一系列便于使用的 Matlab 函数和文件的工具。 实…

设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(实现)

概述 上两篇文章&#xff0c;我们讲解了灰度组件的需求和设计的思路。不管之前讲的限流、幂等框架&#xff0c;还是现在讲的灰度组件&#xff0c;功能性需求都不复杂&#xff0c;相反&#xff0c;非功能性需求是开发的重点。 本章&#xff0c;按照上篇文章的灰度组件的设计思…

Q1营收稳健增长,云从科技如何在“百模大战”的险中求稳?

自从迈入大模型时代&#xff0c;AI行业可谓“一天一个样”。越来越多的企业涌现&#xff0c;舆论热议从未断绝。 但就像所有技术必须经历的那些考验&#xff0c;在现实尺度下&#xff0c;AI顺利走进商业化世界&#xff0c;仍然是少部分玩家掌握的稀缺能力。个中原因不尽相同&a…