数据结构C/C++线性表和单链表

C与C++数据结构与算法基础详解 C与C++数据结构与算法基础详解 数据结构与算法是一切程序的构架与灵魂。 线性结构:线性表(list),栈(Stack),队列(queue),串(String) 线性结构的存储方式:顺序存储与链式存储。 TOP-1线性表 线性表的定义 :即表中第一个数据没有直接前驱元素与最后一个数据无直接后继元素外,其余表中数据均有唯一的前驱元素与后继元素。 线性表的两种存储结构分别是:顺序存储结构和链式存储结构... 阅读详情

在VS2005下面测试通过.最基本的

Code:
  1. #include "stdafx.h"  
  2. #include<stdlib.h>  
  3. #include "stdio.h"  
  4. #include <iostream>  
  5. using namespace std;  
  6. typedef int Type;  
  7. typedef struct LNode{  
  8. Type data;//数据域  
  9. struct LNode *next;//指针域  
  10. }LNode,*LinkList;  
  11. LinkList Head;//头结点  
  12.   
  13. //创建单链表 头插法,栈  
  14. //返回链表头指针  
  15. LinkList CreatLinkList1(){  
  16. LinkList L=new LNode;  
  17. L->next=0;  
  18. LNode *s;  
  19. Type value;//数据类型  
  20. cin>>value;  
  21. while (value!=-1)//-1是结束标志  
  22.     {  
  23.     s=new LNode;  
  24.     s->data=value;  
  25.     s->next=L->next;  
  26.     L->next=s;  
  27.     cin>>value;  
  28.     }  
  29. return L;  
  30. }  
  31.   
  32. //创建单链表尾插法  
  33. //返回链表头指针  
  34. LinkList CreatLinkList2()  
  35. {  
  36. LinkList L=new LNode;  
  37. L->next=0;//空表  
  38. LNode *Node,*rear=L;  
  39. Type value;//数据类型  
  40. cin>>value;  
  41. while(value!=-1)//-1是结束标志  
  42.     {  
  43.     Node=new LNode;//??这里是否会失败?空指针?  
  44.     if(0==Node) break;//??  
  45.     Node->data=value;  
  46.     rear->next=Node;  
  47.     rear=Node;//r指向新的尾结点  
  48.     cin>>value;  
  49.     }  
  50. rear->next=0;  
  51. return L;  
  52. }  
  53.   
  54.   
  55. //求表长 表默认带头结点而且不包含头结点  
  56. int LengthLinkList(LinkList L)  
  57. {  
  58. LNode *p=L;//p指向头结点  
  59. int count=0;  
  60. while(p->next)  
  61.     {  
  62.         p=p->next;  
  63.         count++;  
  64.     }  
  65. return count;  
  66. }  
  67.   
  68. //查找  
  69. //按序号查找,返回指针值  
  70. LNode * getLinkList(LinkList L,int i){  
  71. LNode *p=L;  
  72. int j=0;  
  73. while(p->next!=0&&j<i)  
  74.     {p=p->next;j++;}  
  75.     if(j==i)return p;  
  76.     else return 0;//  
  77. }  
  78. //按值查找,返回第一个符合的值  
  79. LNode *LocateLink(LinkList L,Type x){  
  80.     LNode *p=L->next;  
  81.     while(p!=0&&p->data!=x)  
  82.         p=p->next;  
  83.     return p;  
  84. }  
  85.   
  86. //插入操作在第i个值之之后插入  
  87. bool insertLinkList(LinkList L,int i,Type value)  
  88. {  
  89.     bool returnvalue=false;  
  90.     LinkList p=getLinkList(L,i);  
  91.     LNode *Node=new LNode;//这里是否会失败??  
  92.     if(0!=p)   
  93.     {  
  94.         Node->next=p->next ;  
  95.         p->next=Node;  
  96.         Node->data=value;  
  97.         returnvalue=true;  
  98.     }  
  99.     return returnvalue;  
  100. }  
  101.   
  102. //打印链表所有值并打印长度  
  103. void printLink(LinkList L)  
  104. {     
  105.     int count=0;  
  106.     if(L->next) //从表头走到第一个元素  
  107.     {  
  108.         L=L->next;  
  109.         cout<<L->data<<endl;  
  110.     }  
  111.     L=L->next;//走到第二个元素  
  112.     while(L!=0)  
  113.     {  
  114.         //printf("%d",L->data);//假设是int值  
  115.         cout<<L->data<<endl;  
  116.         count++;  
  117.         L=L->next;  
  118.     }  
  119.     printf("表长度为%d",count);  
  120. }  
  121.   
  122. int main(){  
  123.     LinkList M;  
  124.     //声明  
  125.     LinkList CreatLinkList1();  
  126.     LinkList CreatLinkList2();  
  127.     int LengthLinkList(LinkList L);  
  128.     LNode * getLinkList(LinkList L,int i);  
  129.     bool insertLinkList(LinkList L,int i,Type value);  
  130.     void printLink(LinkList L);  
  131.     //  
  132.     //CreatLinkList1();//测试头插法  
  133.     M=CreatLinkList2();//测试尾插法  
  134.     //printf("长度为%d",LengthLinkList(M));测试长度代码  
  135.     //if(0!=getLinkList(M,3)) printf("找到");//按序号查找  
  136.     //if(LocateLink(M,3)) printf("找到");//测试按值查找  
  137.     //insertLinkList(M,2,8);  
  138.     cout<<"OK"<<endl;  
  139.     printLink(M);  
  140.     system("PAUSE");  
  141.     return 0;  
  142. }  
  143. /////  

顺序表的动态增长

Code:
  1. #include "stdafx.h"  
  2. #include<stdlib.h>  
  3. #define initSize 100//表的初始定义  
  4. #define ListIncrement 10  
  5. typedef int ElemType;  
  6. typedef struct{  
  7. ElemType *elem;//数据元素  
  8. int length;//使用长度  
  9. int listsize;//总长度  
  10. }SqList;  
  11. bool InitSqList(SqList &L){  
  12.     bool trueorfalse=false;  
  13.     L.elem=new ElemType[initSize];  
  14.     if(!L.elem ) {}  
  15.     else {  
  16.     L.listsize=initSize;  
  17.     L.length=0;  
  18.     trueorfalse=true;  
  19.     }  
  20.     return trueorfalse;  
  21. }  
  22. bool insertSqList(SqList &L,int i ,int value){  
  23.     bool trueorfalse=false;  
  24.     if(i<0||i>L.length){}  
  25.     else{  
  26.     int j;  
  27.     for( j=L.length;j>i;j--)  
  28.          L.elem[j]=L.elem[j-1];  
  29.   
  30.     L.elem[j]=value;      
  31.     trueorfalse=true;  
  32.     }  
  33.     return trueorfalse ;  
  34. }  
  35. bool deleteSqList(SqList &L,int i){  
  36.     bool trueorfalse=false;  
  37.     if(i<0||i>L.length) {}  
  38.     else{  
  39.     int j=L.length;  
  40.     for(i;i<j;i++)  
  41.         L.elem[i]=L.elem[i+1];  
  42.   
  43.     L.length--;  
  44.     trueorfalse=true;  
  45.     }  
  46.     return trueorfalse;  
  47. }  
  48. int locateSqList(SqList L,int i)  
  49. {  
  50.     int trueorfalse=-1;  
  51.     if(i<0||i>L.length) {}  
  52.     else{  
  53.     trueorfalse=L.elem[i];  
  54.     }  
  55.     return trueorfalse;  
  56. }  
  57. int main()  
  58. {     
  59.     SqList M;  
  60.     //声明部分  
  61.     bool InitSqList(SqList &L);  
  62.     bool insertSqList(SqList &L,int i ,int value);  
  63.     bool deleteSqList(SqList &L,int i);  
  64.     //声明结束  
  65.     if(InitSqList(M) ) printf("InitTrue/n");  
  66.     if(insertSqList(M,0,1)) printf("inserttrue/n");  
  67.     if(deleteSqList(M,0))printf("deletetrue/n");  
  68.   
  69.     system("PAUSE");  
  70.     return 0;  
  71. }  
  72. ////  

单链表有空指针的可能.

数据结构(知识点碎片极速复习系列一) 四种逻辑结构类型:逻辑结构的二元组表示法:二元组表示法和图形表示法的转换(在树形结构的基础上画线性结构):同一逻辑结构可以对应多种存储结构。存储效率高,可对元素随机存取,但不便于数据修改。(C语言实现:int Array[7];)通过索引表按关键字查找速度快,但因增加索引表使存储空间较大。按关键字查找速度快,需要解决冲突,并非适合任何数据的存储。一个算法是由控制结构(顺序、分支和循环3种)和原操作构成的。假设算法的问题规模为n(固定说法),算法时间分析的就是求出算法所有操作的执行次数(也称频度),用T(n) 阅读详情

相关推荐

数据结构单链表基本操作(C/C++实现)

数据结构-单链表-基本操作(C/C++实现) 注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据 涉及基本运算 初始化单链表 依次采用尾插法插入元素 输出单链表 输出单链表的长度 判断单链表是否为空 输出单链表的第n个元素 输出元素x的位置 在第n个元素位置上插入x元素 输出单链表 删除单链表的第n个元素 输出单链表 释放单链表 GitHub地址(包含.cpp文件和可执...

JunsIr的技术栈 6854

线性表及其应用C语言实现(数据结构复习最全笔记)(期末复习最新版)

引子 线性表 一、顺序表的表示与实现 注意我写的代码和课本的差不多,和PPT的风格还是有些区别的,但本质没啥区别其实,你会哪个都成 1.线性表的顺序结构定义 #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef st......

markconca的博客 6518

数据结构循环单链表基本操作(C/C++实现)

数据结构循环单链表基本操作(C/C++实现) 注意:本代码为了测试运行默认含有操作所需数据,如有需要可自己增删改相关数据 涉及基本运算 初始化循环单链表 依次采用尾插法插入元素 输出循环单链表 输出循环单链表的长度 判空 判断循环单链表的第n个元素 输出元素x的位置 在第n个元素位置上插入f元素 输出循环单链表 删除循环单链表的第n个元素 输出循环单链表 释放循环单链表 GitHub地址(包含...

JunsIr的技术栈 2850

线性表的顺序表示和实现

线性表的顺序表示和实现

浮生若梦 为欢几何 869

【2023王道数据结构】【线性表—page40—24】C、C++完整实现(可直接运行)

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ 如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~ 题目: 用单链表保存m个整数,结点的结构为【data】【link】,且|data|<=n。现要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。 解题思路: >用空间换时间 >开辟辅助数组保存链表中的绝对值 代码实现: #include <iostream.

优快云 精品推荐 664

【2023王道数据结构】【线性表—page40—14】C、C++完整实现(可直接运行)

~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ 如果需要完整代码可以关注下方公众号,后台回复“代码”即可获取,阿光期待着您的光临~ 题目: 设A和B是两个单链表(带头节点),其中元素递增有序,设计一个算法从A和B中的公共元素产生单链表C,要求不破坏A、B的结点。 解题思路: >类似于归并排序 >将相等结点插入LC 代码实现: #include <iostream> using namespace std; typedef struct LNode { .

优快云 精品推荐 746

数据结构——————链表

#include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;windows.h&gt; #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE ...

霸道厂长爱上你的博客 358

STM32CubeMX + HAL库避坑指南:为什么你的代码总在SystemClock_Config卡住?

本文深入剖析了STM32开发者在使用STM32CubeMX和HAL库时,代码在SystemClock_Config函数中卡死的根本原因。文章不仅指出硬件时序、Flash延迟配置等常见陷阱,更提供了从硬件设计、软件容错到深度调试的系统性解决方案,帮助开发者构建鲁棒的时钟初始化策略,彻底告别启动卡顿问题。

bb456的博客 929

线性表的相关操作、linear list

笔记:线性表的要点 定义:n个数据元素的有限序列,可以为空 线性表的顺序表示:用一组地址连续的存储单元依次存储线性表中的数据元素。优点:便于随机存取 C语言实现(软件:Dev-C++): 欢迎大家批评指正 #define List_init_size 100 //初始 #define listincrement 10 //增量 #define Status int #define ok ...

m0_37976933的博客 2059

适合初学者的ROS机器人教程(1): Ubuntu下ROS创建自己的包和使用github下载的包

ROS如何创建自己的包 1. 首先创建catkin工作空间(如果你以及有了请忽略) $ mkdir catkin_ws # 创建一个文件夹里面计划放我们的项目,ws是workspace的缩写 $ cd catkin_ws # 将当前工作文件夹切换到catkin_ws这个文件夹 ~/catkin_ws$ catkin_make # 执行catkin_make创建一ROS项目 此时你的catkin_...

@司南牧|知乎|博客|易懂教程|李韬 3245

Macbook Pro上如何修改brew源

一、需求说明 我的macbook电脑安装了中科大的brew源码,发现安装gpg工具失败,其他工具可以正常安装,为了能将gpg安装成功,就找了找切换brew源的方案,记录如下。 二、切换至国内源 由于使用github默认源有可能存在路径远或者部分服务访问超时的原因,切换至国内源可以提速。 2.1 替换brew.git $ cd "$(brew --repo)" # 中国科大: $ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git #

bufegar0的博客 1080

数据结构与算法(18)--线性表相关概念补充

线性表的类型定义 线性结构的特点 存在唯一的一个被称作"第一个"的数据元素 存在唯一的一个被称作”最后一个“的元素 除第一个元素外,集合中的每个数据元素均只有一个前驱 除最后一个元素外,集合中的每个数据元素均只有一个后继 线性表 是最常用且最简单的一种数据结构。 在线性表中,一个数据元素可以由若干个数据项组成,把数据元素称为记录,含有大量记录的线性表又称为文件。 ...

小朱的博客 392

使用 MATLAB/Simulink + Deep Learning Toolbox,构建一个基于LSTM的电网负荷预测模

本文介绍了一个基于Simulink和深度学习的智能电网负荷预测与调度建模方法。通过LSTM神经网络构建负荷预测模型,将历史负荷、天气、日期等特征作为输入,预测未来24小时负荷。然后将训练好的模型集成到Simulink仿真系统中,结合发电单元模型和经济调度逻辑,实现预测驱动的电力调度优化。实验结果表明,该方法预测误差在2.5%-4.0%之间,相比传统调度方式可降低15%-25%的运行成本。文章详细展示了从数据准备、特征工程、模型训练到系统集成的完整流程,为智能电网中AI技术的应用提供了实用参考。

amy_mhd的博客 172

【数据结构篇C++实现】- 线性表 - 顺序表和链表

线性表知识总结,一文搞懂什么是顺序表与链表,以及常见的操作

陈七的博客,学习知识分享,期待与大家的交流 4259

在 SAP BTP Cloud Foundry 环境中开发 SAP HANA 的完整实战路线图

SAP HANA Cloud迁移路径解析:从本地到云原生的数据库现代化 本文梳理了SAP HANA在Cloud Foundry环境中的架构定位和实施路径,针对不同起点的项目提供迁移建议。核心内容包括: SAP HANA Cloud在Cloud Foundry中的双重角色:既作为平台服务提供数据库实例,又通过HDI容器管理MTA应用中的数据库工件。 针对四类典型项目起点的迁移策略: 绿地项目:直接采用CAP+SAP HANA Cloud组合 已有HANA service或XS advanced项目:需对照兼容

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 266

TCP/IP工业通信C#极致实现:工业级TcpClient封装 + 粘包拆包彻底解决 + 高频采集专项优化(完整可投产)

在工业自动化、PLC通信、工业传感器/模块、产线高频数据采集等场景中,TCP/IP是绝对主流的通信方式,相比串口/485,具备传输速率高、距离无限制、布线简单、抗干扰强的优势。但工业TCP通信和普通桌面TCP通信有本质区别,工业场景的核心要求是:✔高可靠:7×24小时不间断运行,断网自动重连、异常自动恢复,绝不崩溃;✔无数据错误:彻底解决「粘包、拆包、半包」问题(工业通信第一大坑,90%的通信异常源于此);✔高频采集优化:支持级别的高频读写PLC/设备,无卡顿、无丢帧、CPU占用极低;✔。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 861

考研C/C++数据结构线性表代码助记法

考研C/C++数据结构线性表代码助记法

Nanqipro的研究日常 1364

11 指挥AI写C语言/嵌入式基础代码,适配硬件与底层逻辑

本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十一篇,正式进入第三阶段多场景实战环节。聚焦**C语言/嵌入式基础代码**生成,结合嵌入式开发的核心需求,讲解如何精准编写指令,指挥AI生成适配硬件、贴合底层逻辑的C语言代码,覆盖嵌入式常用底层功能、硬件适配要点、代码规范,搭配完整指令模板、AI输出示例与实操校验方法,零基础也能快速指挥AI完成嵌入式基础开发,无需死记硬背C语言底层语法。

coreopt的博客 141

第4周 项目2 建设“单链表”的算法库

/*   *烟台大学计算机与控制工程学院   *作    者:朱国荣    *语    言:c/c++  *完成日期:2015年10月05日    *版 本 号:vc6.0    * 问题描述:单链表算法库算法库采用程序的多文件组织形式,包括两个文件: * 输入描述:无   * 程序输出:结果   */   代码: 1.头文件:linklist.h,包含

zhuguorong_zgr的博客 326

大学生数学建模赛题解析及优秀论文-2021电工杯A题高铁牵引供电系统运行数据分析及等值建模(附Python代码)

我国是世界上电气化铁路运营里程最长、服役电力机车型号最多、运营最 繁忙的国家。截至 2020年底,我国铁路年消耗电量约800亿千瓦时,约占三峡 年总发电量的 80%。图1为高速铁路牵引供电系统示意图,主要包括牵引变电所、牵引网和动车 组。牵引变电所将 220kV三相电压转换为满足电力机车运行的27.5kV单相电压, 其核心元件是牵引变压器。牵引网由馈线、接触网、钢轨、回流线等组成,完成 对电力机车的送电任务。...

wenyusuran的专栏 3170

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【数据结构】 线性表之链表(List)「详解」

本文介绍了线性表的链式存储结构——链表,重点讲解了单链表和双向链表的实现原理及基本操作。主要内容包括:1)单链表的定义、头指针与头结点区别;2)单链表的基本操作实现(读取、插入、删除);3)单链表的整表创建方法(头插法和尾插法);4)双向链表的结构定义和插入删除操作。通过与顺序存储结构的对比,指出链表在频繁插入删除操作时的优势。文章还提供了详细的C语言代码实现,为理解链表数据结构提供了实践参考。

2503_94545876的博客 644

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

顺序表和链表的代码实现

线性表的各类基础功能的代码实行

WXGQSCR的博客 422

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c语言求n维方阵的对角线元素之和,李春葆数据结构教程第4版习题答案.docx

1章 答案简述数据与数据元素的关系与区别。解:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。数据元素是数据的基本单位,是数据的个体。数据与元素之间的关系是元素与集合之间的关系。数据结构和数据类型有什么区别?解:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容, 即数据的逻辑结构、存储结构和数据的运算。而数据类型是一个值的集合和定义在这个集合上的一组运算的...

weixin_39888943的博客 540

第二章小结

1.内容:第一章学习中,数据结构包括逻辑结构和存储结构两个层次;逻辑结构包括线性结构和非线性结构,而存储结构包括顺序存储结构和链式存储结构。接着第二章的学习中,具体学习了线性表中的顺序表和链表。 (1)顺序表:数据元素在逻辑上是相邻的,在物理上也是相邻的;而且顺序表上的数据元素是由一组连续的存储单元来依次存储。因此,若已知顺序表的起始存储位置,那么任意的数据元素也可知。顺序表的基本操作:初始化、...

weixin_30335575的博客 73

数据结构学习笔记-杭电

在这里插入代码片# 数据结构 时间复杂度 数的清为O(1) 线性结构定义: 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。 顺序存储,链式存储 C语言动态分配函数(<stdlib.h>) malloc(m)开辟m字节长的地址空间 sizeof(x)计算变量的长度 free(p)释放指针p所指变量的存储空间,彻底删除一个变量 C++ new +类型名 int *p=new int; 或int *p =new int(10); dele

Challfate的博客 2049

C/C++泛型编程实现数据结构之单链表(附操作系统原理深度刨析)

C/C++泛型编程实现数据结构之单链表 线性表的链式存储结构 线性表的顺序存储结构的特点是:在逻辑上关系相邻的元素在物理上的位置也是相邻的,因此顺序存储结构的线性表随机存储的时间复杂度为O(1),因为CPU不比花费过多的时间在内存寻址中,数据排列在内存中是紧凑的。但是正因如此,导致顺序存储的插入和删除操作需要一一移动元素来实现,最坏情况下的时间复杂度可以达到O(N^2) 当经常需...

单核CPU的小朋友的博客 5万+
上一篇: IBM钱大群:数据与智慧是企业制胜关键
下一篇: 数据结构之双链表
blacksapper
博客等级 码龄19年 20粉丝 81原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值