线性表的链式存储结构基本操作代码实现

一、创建单链表:从表尾到表头逆向创建

bool CreateList_L(LinkList L,int n)
{printf("------创建链表开始------\n");LinkList p;for (int i=n;i>0;i--){printf("输入第%d个结点数据\n",i);p=(LinkList)malloc(sizeof(LNode));scanf_s("%d",&p->data);//将p插入到表头p->next=L->next;L->next=p;}printf("------创建链表完成------\n");return true;
}

二、打印链表数据

bool PrintList(LinkList L)
{printf("------打印链表数据开始------\n");LNode *p=L->next;while (p){printf("%d ",p->data);p=p->next;}printf("\n------打印完成!------\n");return true;
}

三、查找单链表结点

bool GetElem_L(LinkList L,int pos,ElemType *e)
{LinkList p=L->next;//L为头指针,p指向头结点int j=1;//计数器while (p&&j<pos)//寻找p指向第pos个结点或者为空{p=p->next;j++;}if (!p||j>pos)//pos大于表长或者pos小于1{return false;}*e=p->data;return true;
}

四、插入结点

bool ListInsert(LinkList L,int pos,ElemType e)
{printf("------插入链表结点开始------\n");LinkList p=L;//p指向头节点int j=0;//计数器while (p&&j<pos-1)//寻找p指向第pos-1个结点{p=p->next;j++;}if (!p||j>pos-1){return false;}LinkList s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;printf("------插入链表结点数据%d完成------\n",e);return true;
}

五、删除结点

bool ListDelete(LinkList L,int pos,ElemType *e)
{printf("------删除链表结点开始------\n");LinkList p=L;int j=0;while (p->next&&j<pos-1)//寻找p指向第pos-1个结点{p=p->next;j++;}if (!p->next||j>pos-1){return false;}LinkList q=p->next;p->next=q->next;*e=q->data;free(q);printf("------删除链表结点数据%d完成------\n",*e);return true;
}

六、获取表长

int ListLength(LinkList L)
{LinkList p=L->next;int len=0;while (p){len++;p=p->next;}return len;
}

七、判断链表中是否有某数据

bool IsListData(LinkList L,ElemType dt)
{LinkList p=L->next;for (int i = 0; i < ListLength(L); i++){if (dt==p->data)return true;p=p->next;}return false;
}

六、程序运行

#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
#include "stdlib.h"
int _tmain(int argc, _TCHAR* argv[])
{printf("输入创建链接结点个数\n");int n;scanf_s("%d",&n);LinkList L;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;//建立带头结点的单链表CreateList_L(L,n);PrintList(L);ListInsert(L,4,4);PrintList(L);ElemType *e=(ElemType*)malloc(sizeof(ElemType));ListDelete(L,4,e);PrintList(L);GetElem_L(L,1,e);printf("链表第1个结点数据为%d\n",*e);system("pause");return 0;
}

线性表的链式存储结构基本操作代码实现相关推荐

  1. 线性表的链式存储结构及代码实现(单链表,双链表,循环链表)

      在上一篇博文中介绍了线性表的顺序存储方式,它最大的缺点就是在插入和删除操作时会移动大量的元素,这显然会耗费很多时间.后来人们便想到了用链式存储方式来解决上面这一问题.链式存储线性表时,不需要使用地 ...

  2. 数据结构和算法:(3)3.2线性表的链式存储结构

    线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素也就是说你这个可以放在A地点,这个可以放在E地点,A地点和E地点中间可以隔开一个C地点和D地点,这样是允许的),这组存储单元可以存在 ...

  3. 链表list(链式存储结构实现)_5 线性表的链式存储结构

    系列文章参考资料为<大话数据结构>,源码为个人私有,未经允许不得转载 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,可以使连续的,也可以不连续,也就意味这些元素可以 ...

  4. 从零开始学数据结构和算法(二)线性表的链式存储结构

    链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...

  5. 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)

    线性表的链式存储结构 数据结构系列文章 第三章 循环链表.双向链表 文章目录 线性表的链式存储结构 前言 一.循环链表 (一)定义 (二)尾指针 二.双向链表 (一)定义 (二)代码 总结 前言 提示 ...

  6. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  7. 数据结构开发(5):线性表的链式存储结构

    0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? ...

  8. 线性表(链式存储结构)C语言

    文章目录 一.线性表的链式存储结构 二.代码 1.头文件与宏定义: 2.对链表的定义及主要使用函数: 3.测试函数(主函数): 三.运行结果 一.线性表的链式存储结构 线性表的链式存储结构的特点是用一 ...

  9. Python 数据结构 之 线性表 的链式存储结构

    用Python 来实现 C语言中 线性表的链式存储结构. 文章转载请注明:  Python 数据结构 之 线性表 的链式存储结构 代码地址 https://github.com/WenkeZhou/P ...

  10. 【数据结构】CH2 线性表的链式存储结构

    目录 一.链表概述 1.相关定义 二.单链表 1.插入和删除节点的操作 (1)插入结点 (2)删除结点 2.建立单链表 (1)头插法 (2)尾插法 3.线性表基本运算在单链表中的实现 (1)初始化线性 ...

最新文章

  1. java代码实现count排序_java计数排序
  2. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型
  3. 深度学习笔记七:循环神经网络RNN(基本理论)
  4. php imagick icon,php Imagick 生成图片
  5. android连接usb外设通讯_iOS App连接外设的几种方式
  6. 做好网站SEO优化都需要坚持什么?
  7. Lombok 安装、入门 - 消除冗长的 java 代码
  8. 【Linux】34. shell脚本判断当前年份是否正确
  9. 【HDU - 6237】A Simple Stone Game(贪心,思维,素因子分解,数学)
  10. 基于Spring boot+Vue的在线考试系统
  11. 数据结构中La表的数据合并到Lb表中
  12. 【ACM】nyoj_2_括号配对问题_201308091548
  13. 某计算机有五级中断L4,2011计算机基础考研组成原理部分
  14. SQL基本语句(整理)
  15. 模2运算 / 模2算法(模2加法、模2减法、模2乘法、模2除法)
  16. HiJson(Json格式化工具)64位中文版下载 v2.1.2
  17. Android上边抽屉式标题,Android Navigation Drawer样式抽屉的使用
  18. (已解决)spring-boot maven报错Project 'org.springframework.boot:spring-boot-starter-parent:2.2.0.RELEAS
  19. 计算机音乐咱们结婚吧音乐谱,齐晨咱们结婚吧简谱_咱们结婚吧歌词
  20. pytorch官网不支持cuda10.2

热门文章

  1. 天津市高分二号卫星影像获取/高分一号卫星影像
  2. 数据结构之二叉平衡树
  3. 修改手机定位 之 Fake Location 软件使用教程
  4. 基于内容的图像检索系统设计与实现-java+mysql
  5. 鸟哥的linux私房菜中推荐的linux学习网站
  6. 同花顺公式转python_【转】 同花顺系统公式编写教程及函数用法基础(一)
  7. comsol5.6下载
  8. 实验四:AC与AP间VLAN配置实验
  9. 泰勒公式和海森矩阵(Hessian-matrix)
  10. 单片机上的8位数码管显示数字12345678