IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C/C++刷题预备——数据结构(四)单链表&线性表总结 -> 正文阅读

[C++知识库]C/C++刷题预备——数据结构(四)单链表&线性表总结

上一节还遗留一些知识点(比如说动态实现删改查),但是不重要,有了之前动手操作练习的基础,实现会很快,这里就直接略过。
前面两节主要说了线性表结构中的数据元素之间的关系,这一节将会介绍关于单链表结构中的数据元素之间的关系
单链表:顾名思义就是像链条一样,两个数据元素紧紧扣在一块。在数组中的定义如下(这里依旧使用最简单的int类型作为数据元素类型)

#include "stdio.h"

#include <malloc.h>

typedef struct list

{

??? //为了简化操作:数据元素简单认为是int类型

??? int data;

??? int length;//这个单链表中元素的个数

??? struct list *next;

}lnode,*linklist;

上面就创建了一个最简单的单链表(这里的单链表其实也就是指一个节点),值得注意的是:

单链表按照定义应该是一个节点不仅仅包含数组元素本身,还应该由指向下一个节点的指针

struct list *很自然的就明白是指向下一个节点。在结构体中定义可以直接赋值指向那个节点。为了方便后续操作,还要在结构体外进行定义一个头节点(*linklist),后面就用linklist来表示链表的头节点.

一定一定要注意好对应关系

Linklist可以是一个头节点,节点不一定是Linklist

#include "stdio.h"

#include <malloc.h>

typedef struct node

{

??? //为了简化操作:数据元素简单认为是int类型

??? int data;

??? struct node* next;

}lnode, * linklist;

linklist listinsert1(linklist& l, lnode *data) {//链表,需要连接的节点

??? l->next = data;

??? data->next = NULL;

??? return l;

}

void listinsert2(lnode *data1, lnode *data2) {//节点,需要连接的节点

??? data1->next = data2;

??? data2->next = NULL;

}



int main() {

??? //链表初始化

??? lnode node1;

??? node1 = { 1,NULL };

??? //这个节点是一个头节点

??? linklist linklist1 = &node1;



??? //定义新节点

??? lnode *node2 = (lnode*)malloc(sizeof(lnode));

??? *node2 = { 23,NULL };

??? linklist1 = listinsert1(linklist1, node2);//传入的必须是指针



??? //第三次测试

??? lnode *node3 = (lnode*)malloc(sizeof(lnode));

??? *node3 = { 5,NULL };

??? listinsert2(node2, node3);//传入的必须是指针



??? //实现单链表的增

??? printf("linklist1->data=%d\n", linklist1->data);

??? printf("linklist1->data->data=%d\n", linklist1->next->data);

??? printf("linklist1->data->data->data=%d\n", linklist1->next->next->data);



??? printf("OK");

}

后面如果想实现后插就可以直接定义一个lode

然后让上一个节点的指针指向它即可。

附录1

注意:在函数中如果想修改某个值,要么用参数是引用,要么传入用指针

线性表的其他形式

前面说过顺序表还有单链表,顺序表给从无到有建立了基础,而单链表则是又一大难题。其他两种-双链表和循环链表实现的代码其实上面两种形式就已经算是一种原型了,对于这两种结构,这里就简单的提一嘴。
这就是双链表:

在代码中只要添加一个指针即可

这就是循环链表

只是在最后一个数据元素中添加头指针的地址即可
线性表就准备写到这里了,不是不想扩充,而是因为前期敲代码花了很多时间,一章寻思寻思就花了一下午。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:13:43  更:2022-10-17 12:15:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:19:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码