上一篇讲到线性表的顺序存储实现方式

接了下来就是链式存储的实现了:先讲链式存储的优势,在插入和删除的时候非常方便,但是对于空间的申请具有不确定性
正片开始
结构的定义

typedef struct Node{int data;struct Node;
}LNode,*LinkList;

详解如下:这个上面的Node就是它的名字,没有啥作用,除了在这里定义外,木有其他的屁儿用
LNode相当于是它的结构体的类型,如同int的用法,后面使用它的时候如同LNode *p;而LinkList就是它的结构体指针,用法如
同 int *,示例:LinkList p;这个是等同于前面的那个p定义的一样
当然还得要申请一块空间,它才是正真的存在

p=(*LinkList)malloc(sizeof(LNode));

接下来就是常见的操作

insertLinkList();
deleteLinkLiist();
queryLinkList();
updataLinkList();

插入

//在第n个位置插入元素P
void insertLinkList(LinkList L,int n,LNode p){int i=0;LNode *q;q=L;for(i;i<L.length;i++)q=q->next;if(i==n-2){p=q->next->next;p->next=q;}}

删除操作

//删除第n个位置上的元素
void deleteLinkList(LinkList L,int n){int i=0;LinkList *p=L;if(L.length-1<n){return 0;}else{for(i;i<L.length;i++)p=p->next;if(i==n-2){p->next=p->next->next;}}
}

查询也一样
p=p->next;
当前的p->data=data1;返回需要的数据
修改也是一样
查询到要替换的元素,前面的Q=P->next->next;p->next=Q;

写一个初始化的函数吧

void initLinkList(LinkList L){L=(LinkList)malloc(sizeof(LNode));//初始化头部
//1、带头节点
L-next=null;
//非头节点就是自己就是元素之一,一般建议是使用带头结点的,因为,总是需要一个flag或者其他的东西去辅助;
}

两种插入方法
1、头插法;如 L 1 、L 2 1、 L 3 2 1、L 5 3 2 1;
2、尾插法:如L 1 、 L 1 2 、L 1 2 3 、L 1 2 3 5;

算法1:单链表的转置:

#include <stdio.h>
#include <stdlib.h>
typedef struct {int data;struct Node *next;
}LNode,*LinkList;int main(){//  Node *p;LinkList L = (LinkList)malloc(sizeof(LNode));LNode *head=L;int i=0;for(i;i<5;i++){LNode *p = (LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);head->next=p;head=head->next;}revese(L);LNode *h=L->next;for(i=0;i<5;i++){printf("%d\n",h->data);h=h->next;}}
void revese(LinkList L){LNode *p1;LNode *q;p1=L->next;L->next=NULL;while(p1){q=p1;p1=p1->next;q->next=L->next;L->next=q;}}

提醒一下,变量名字别重复,无论是在哪个方法里面,不要重复,反正问题多多;

数据结构第二版(朱昌杰版)五相关推荐

  1. 脚踏实地《数据结构第二章》第五节:循环链表

    一:定义 二:循环单链表 2.1 初始化代码 typedef struct LNode{//定义单链表结点类型ElemType data;//每个节点存放一个数据元素struct LNode *nex ...

  2. 数据结构第二版(朱昌杰版)第四章:习题4

    该文章为数据结构第二版朱昌杰版本的第四章习题4: 手记如下:另外附上自己的图记:(ps,概念性的问题不再阐述) 第四题:连续三个,全部拿掉用aaaa替换,就是A答案,它这里说的位置是第二个,不是以下标 ...

  3. 【数据结构 C语言版】第五篇 队列(看完刷题无敌)

    [数据结构 C语言版]第五篇 队列(看完刷题无敌) 写在前面 更新情况记录: 最近更新时间 更新次数 2022/10/19 1 参考博客与书籍以及链接: (非常感谢这些博主们的文章,将我的一些疑问得到 ...

  4. 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解

    目录 一.线性表顺序存储结构(顺序表) 0.线性表的基本概念 1.样例引入:多项式相加 二.线性表链式存储结构(链表) 0.链表的基本概念 1.前插法代码实例 2.链表尾插法完整代码附带各种操作 三. ...

  5. 《数据结构(C语言版)》严巍敏课件~第二章:线性表

    <数据结构(C语言版)>严巍敏课件-第二章:线性表

  6. 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...

  7. 资料分享:送你一本《数据结构(C#语言版)》电子书!

    对于信息类专业的学生而言,数据结构与算法是一门必修的课程.只有学好这门课程,熟练掌握线性表.栈.队列.树.图等基本结构,以及在这些结构上的各种算法,才能利用计算机去解决实际问题. 如何学好这门课程呢, ...

  8. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  9. PDF课件下载!北京大学公开课《数据结构与算法Python版》

    北京大学公开课<数据结构与算法Python版>,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法,强调问题-数据-算法的抽象过程,关注数据结构 ...

  10. 数据结构(C语言版) 第 六 章 图 知识梳理 + 习题详解

    目录 一. 图的基本定义和术语 一.图的基本概念 1.度 2.连通 (1)连通图 (2)强连通/强连通图 3.回路 4.完全图 二.图的三种存储结构 1.邻接矩阵表示法 2.邻接表(链式)表示法 3. ...

最新文章

  1. html5 css3雪花效果,HTML5 | CSS3水晶皇冠雪花形状
  2. 笔记:Hadoop权威指南 第4章 Hadoop I/O
  3. STL 之swap, iter_swap, swap_ranges
  4. 我要回家软件_超4成受访网友认可候补购票:抢票软件难了,还是12306靠谱
  5. 怎么成为开源贡献者_为什么要成为开源的支持者
  6. 【jQuery学习】—jQuery对象的访问
  7. 热更新_UnityXlua热更新
  8. Codeforces Round #273 (Div. 2) D. Red-Green Towers DP
  9. 没想到!2018微信年度数据报告显示使用最多的表情竟是...
  10. 视频贴片广告有哪些形式,视频贴片广告展示形式如何?
  11. java put方法_java 实现Put request
  12. c语言中断函数作用,进一步理解中断函数
  13. 从Antd 源码到自我实现之 Menu 导航菜单
  14. 【软考】下午题 解题思路总结
  15. SQL零基础入门学习(十)
  16. 网络——Windows下的网络编程入门
  17. 计算机浮点数的格式,单精度与双精度的区别
  18. Dvwa之暴力破解全级别学习笔记
  19. micropython ota_物联网产品的首选方案——5款追求极简设计的ESP32-PICO-D4开发板
  20. ie-css3.htc兼容ie8

热门文章

  1. java 城市公交查询系统源码_基于Java的城市公交查询系统的毕业设计参考源码
  2. 【云平台】与【物联网云平台】
  3. [深入研究4G/5G/6G专题-34]: URLLC-5-《中国联通5G URLLC技术白皮书3.0版本》解读-1-业务场景
  4. 用C实现Lenet的总结
  5. tms320f28027 中断优先级_TMS320F28027 自带串口中断收发数据例子
  6. LR(0)项目集规范族和分析表的构造
  7. osm地图服务器搭建(二)
  8. opencv图像归一化zscore_normalize
  9. TensorFlow实现多层感知器
  10. Linux下,进程的相关知识,进程的消耗,常用信息,状态,静态查询命令ps,动态查询命令top