#include "stdafx.h"
#include<stdlib.h>#define ElementType int
#define MAXSIZE 10typedef struct LNode *List;
struct LNode
{ElementType Data[MAXSIZE];int Last;
};//初始化
List MakeEmpty()
{List PtrL;PtrL = (List)malloc(sizeof(struct LNode));PtrL->Last = -1;return PtrL;
}//查找
int Find(ElementType X, List PtrL)
{int i = 0;while (i <= PtrL->Last && PtrL->Data[i] != X)i++;if (i > PtrL->Last)return -1;//如果没有找到,返回-1else return i;//找到存储位置
}
//插入(第i个1<i<n+1)位置插入一个值为x的新元素
void Insert(ElementType X, int i, List PtrL)
{int j;if (PtrL->Last == MAXSIZE - 1) {printf("表满\n");return;}//检查插入位置的合法性if (i <1 || i> PtrL->Last + 2){printf("位置不合法");return;}for (j = PtrL->Last; j >= i - 1; j--)PtrL->Data[j + 1] = PtrL->Data[j];PtrL->Data[i - 1] = X;PtrL->Last++;//Last仍是指向最后的元素return;
}
//删除第i个位置上的数据
void Delete(int i, List PtrL)
{int j;if (i < 1 || i >PtrL->Last + 1){printf("不存在第%d个元素");return;}for (j = i; j <= PtrL->Last; j++)PtrL->Data[j - 1] = PtrL->Data[j];PtrL->Last--;return;
}///************************************************************************
//线性表的链式存储结构
typedef struct LNode *List;
struct LNode
{ElementType Data;List Next;
};
struct LNode L;
List PtrL;//求表长
int Length(List PtrL)
{List p = PtrL;int j = 0;while (p) {p = p->Next;j++;}return j;
}//按序号查找
List FindKth(int k, List PtrL)
{List p = PtrL;int i = 1;while (p != NULL && i < k){p = P->Next;i++;}if (i == k)return p;elsereturn NULL;
}
//按值查找
List Find(ElementType X, List PtrL)
{List p = PtrL;while (p != NULL && p->Data != X)p = p->Next;rerturn p;
}//插入,插入在第i-1个节点的后面
void Insert(ElementType X, int i, List PtrL)
{List p, s;if (i == 1){s = (List)malloc(sizeof(struct LNode));//申请装填节点s->Data = X;s->Next = PtrL;return s;              //返回表头指针}p = FindKth(i - 1, PtrL);//查找第i-1个节点if (p == NULL){printf("参数i出错");return NULL;}else{s = (List)malloc(sizeof(struct LNode));s->Data = X;s->Next = p->Next;p->Next = s;return PtrL;}
}
//删除链表的第i个位置上的节点
//先找到链表的第i-1个结点
//再用指针s指向要被删除的节点(p的下一个节点)
//然后修改指针,删除s所指向的结点
//最后释放s所指向的空间
List Delete(int i, List PtrL)
{List p, s;if (i == 1)//要删除的是表的第一个结点{s = PtrL; //s指向第1个结点if (PtrL != NULL)PtrL = PtrL->Next;//从表中删除else  return NULL;free(s);                     //释放空间return PtrL;}p = FindKth(i - 1, PtrL);//查找第i-1个结点if (p == = NULL){printf("第%d个结点不存在",i - 1); return NULL;}else if (p->Next == NULL){printf("第%d个结点不存在", i);return NULL;}else{s = p->Next;//s指向第i个结点p->Next = s->Next;//从链表中删除free(s);retur PtrL;}}

表之顺序结构和链式结构相关推荐

  1. java链式结构_java语言实现队列顺序结构与链式结构

    本文主要向大家介绍了java语言实现队列顺序结构与链式结构,通过具体的内容向大家展示,希望对大家学习java语言有所帮助. 队列的顺序存储结构实现 public class Queue{ privat ...

  2. 【C】二叉树--顺序结构(详解堆的实现,topK排序、堆排)、和链式结构(链式结构的遍历、链式结构常见递归操作以及练习题)

    本章我们将引入树的概念并详细介绍二叉树.我们会在介绍顺序二叉树基础上,进一步介绍堆以及堆的实现,并以此为依据详解topK排序.堆排等问题:然后我们会介绍链式二叉树的实现以及各种操作.最后,我们也会给出 ...

  3. 数据结构(顺序结构、链式结构、索引结构、散列结构)

    文章目录 1.概述 2.数据间逻辑关系 3.数据的存储结构(或物理结构) 3.1顺序结构 3.2链式结构 3.3索引结构 3.4散列结构 4.运算结构 1.概述 数据结构,就是一种程序设计优化的方法论 ...

  4. 栈之顺序结构和链式结构

    栈的顺序结构实现 typedef int Position; struct SNode {ElementType *Data; /* 存储元素的数组 */Position Top; /* 栈顶指针 * ...

  5. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  6. 数据的逻辑结构(线性结构、非线性结构;集合结构、线性结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  7. c语言建立线性表(顺序储存,链式储存,循环,双向)全

    c语言建立线性表 顺序储存 储存结构 初始化(建立)顺序表 查找操作 一.按值查找,找到返回对应的下标 二.按照下标返回元素 插入操作 一.在线性表尾部添加元素 二.在位置i处插入元素 三.顺序表(有 ...

  8. 线性表之顺序存储结构与链式存储结构 及 应用

    前言 我们常用的线性表是顺序存储结构和链式存储结构表示,是最基本.最简单.也是最常用的一种数据结构:一个线性表是由n个相同特性的数据的有限序列:比如java中的数组 ,链表:所以学习这两种结构表示是非 ...

  9. 顺序、链式结构的个人书籍管理系统(C++)

    仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊. 因上一作浏览量激增,不胜惶恐.故上传新版,恳请各路大神赐教. 个人书籍管理系统的编写.制作与实现(C语言) 项目要求 设计一个图书管 ...

最新文章

  1. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理
  2. 嵌入式编程笔记之六--设备树初体验
  3. bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳
  4. python sklearn下载了但是引用失败_关于python:导入sklearn时出错
  5. python getopt
  6. android 应用自动重启,Android 应用崩溃后自动重启的方法
  7. SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
  8. python装饰器(docorator)详解
  9. 概率论:均值、标准差、方差、协方差、矩
  10. 正则匹配emoji字符
  11. 【高等数学】方差的集合意义
  12. 「水花投资」是什么?是个人吗?
  13. 2021年高处安装、维护、拆除新版试题及高处安装、维护、拆除考试试卷
  14. 公关,从讲好一个故事开始
  15. Elasticsearch聚合学习之二:区间聚合
  16. team viewer如何解绑设备
  17. Qt for IOS 制作APP启动页面
  18. 2016年4月管理计算机应,2016年4月计算机应用能力题库
  19. Android studio wifi 连手机
  20. 【C++新手教程】C++ 循环

热门文章

  1. 机器学习-MNIST数据集-神经网络
  2. STOP:c0000218 {Registry File Failure}
  3. RFID自动识别术语解释(zt)
  4. mosquitto 使用时出现的一些问题及其解决办法
  5. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
  6. 卡尔曼滤波器算法(Kalman Filter)—— 数学推导,图文并茂
  7. 死锁的4个必要条件和处理策略
  8. 区块链系统之《一种基于区块链的云数据共享方法》
  9. C++ Primer 5th笔记(9)chapter9 顺序容器
  10. 初等数论--同余方程--同余方程组:中国剩余定理