C语言实现线性表(链式存储方式)】的更多相关文章

#include <stdio.h> #include <stdlib.h> //提供malloc()原型 typedef struct LNode *List; typedef int ElementType; //定义数据结构的自定义名称 struct LNode{ ElementType Data; //数据域 List Next; //指针域 }; struct LNode L; List PtrL; int Length(List PtrL) //链表头指针 /*表长*/…
文字描述 之前的链表(单链表.循环链表)的链式存储结构中只有一个指示直接后继的指针域.由此,从某个结点出发只能顺指针往后寻查其他结点.若要寻查结点的直接前驱,则需从表头指针出发.即单链表中,NextElem的执行时间为1,而PriorElem的执行时间为n.为了克服单链表这种缺点,可利用双向链表. 在双向链表中,每个节点有两个指针域,一个指向其直接后继,一个指向其直接前驱. 示意图 算法分析 插入.删除.查找.求后继等同单链表.但是求前驱不一样,其时间复杂度为1. 代码实现 // // Crea…
文字描述 循环链表是另一种形式的链式存储结构.它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环.由此,从表中任一结点出发均可找到表中其他结点. 示意图 算法分析 插入.删除.查找等同单链表. 代码实现 // // Created by lady on 19-1-27. // #include <stdio.h> #include <stdlib.h> //线性表的单向循环链表存储结构 typedef struct ElemType{ ]; }ElemType; ty…
文字描述: 为了表示前后两个数据元素的逻辑关系,对于每个数据元素,除了存储其本身的信息之外(数据域),还需存储一个指示其直接后继的信息(即直接后继的存储位置,指针域). 示意图: 算法分析: 在单链表中插入和删除元素时,主要是改变指针的值,其时间复杂度为1.而顺序存储的话,其时间复杂度为n. 在单链表中求长度时不如顺序存储结构,其时间复杂度为n: 而顺序存储是1.故可以在链表头结点中设置一个长度值,在插入数据元素时加1,在删除数据元素时减1. 在单链表中查找指定数据元素时,其时间复杂度和顺序存草…
链表(链式存储结构)及创建 链表,别名链式存储结构或单链表,用于存储逻辑关系为 "一对一" 的数据.与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的. 例如,使用链表存储 {1,2,3},数据的物理存储状态如下图所示: 我们看到,上图 根本无法体现出各数据之间的逻辑关系.对此,链表的解决方案是,每个数据元素在存储时都配备一个指针,用于指向自己的直接后继元素.如下图所示: 像上图这样,数据元素随机存储,并通过指针表示数据之间逻辑关系的存…
一个单链式实现的线性表 mList (GCC编译). /** * @brief 线性表的链式实现 (单链表) * @author wid * @date 2013-10-21 * * @note 若代码存在 bug 或程序缺陷, 请留言反馈, 谢谢! */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 typedef struct { int x; int y; }Point2D; //P…
链队列的结构示意图: 先进先出. QueueInterface.java//操作方法接口 package 队列的实现; public interface QueueInterface { public void enQueue(Object t); public Object delQueue(); public int size(); public boolean isEmpty(); public Object head(); public void clear(); } Node.java…
1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <class T> class LinList { private: ListNode <T> *head; //头指针 int size; //当前的数据元素个数 ListNode <T> *Index(int i); //定位 public: LinList(void); //构造函…
一.线性表的顺序存储 typedef int ElemType;typedef struct List { ElemType *data;//动态分配 ,需要申请空间 int length; }List; 0.完整代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 50 #define TRUE 1 #define FALSE 0 typedef int ElemType ; struct List { ElemTyp…
上一节中, 线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式来表示.然后,另一方面来看,这个特点也造成这种存储结构的弱点,在做插入或删除操作时,需移动大量元素. 而链式存储结构,由于它不需要逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构所具有的弱点,但同时也失去了顺序表可随机存取的优点. 线性链表 wiki中的定义: 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不…