
数据结构
魂小猫
这个作者很懒,什么都没留下…
展开
-
数据结构—链表-链式存储
头节点里面不放任何东西 头指针指向头节点 有些链表没有头节点 头指针直接指向首节点 头节点是为了方便插入和删除运算的实现 单链表的存储结构其实就是描述每一个节点是如何构成的 首先他数据域和数据类型是什么,实际应用中数据域是一个复合数据类型 在单链表这样一个数据结构里面,我们首先要定义每一个节点是如何构成的 数据域 指针域(指向下一个节点) 一个节点通过指针指向另外一个节点,数据结构中原创 2017-04-30 14:04:40 · 691 阅读 · 0 评论 -
线性表—定义
线性表是具有相同特性的数据元素的一个有限序列。 表示为 L=(a 1 ,a 2 …a i-1 ,a i ,a i+1 …a n ) 线性表的长度:序列中所含元素的个数——n,n≥0 空表:当n=0时,表示线性表是一个空表,即表中不包含任何元素。 前驱:a i-1 是a i 的前驱,2≤i≤n 后继:a i+1 是a i 的后继,1≤i≤n-1 表头元素:表中第一个元素a原创 2017-04-24 11:53:02 · 364 阅读 · 0 评论 -
线性表—顺序表-顺序表基本运算的实现
基本运算——初始化线性表 lintList 目标是构造出一个空的线性表 分配空间后,将length成员设置为0 对L的作用会传递回去基本运算——销毁线性表 DestroyList C free() C++delete()基本运算——判断是否为空表 ListEmpty bool类型 C没有 C++才有 C自己构造一个基本运算——求线性表长度 ListLength 基原创 2017-04-24 20:04:09 · 1208 阅读 · 1 评论 -
线性表—顺序表-创建线性表的实现
注意物理序号和逻辑序号的不同define MaxSize 50typedef struct { ElemType data[MaxSize]; int length; } SqList;基本运算—初始化线性表 构造一个空的线性表L 分配空间,并将length成员设置为0 算法 void InitList(SqList *&L) //指针的引用 { L=(SqList *)mall原创 2017-04-24 12:49:02 · 1149 阅读 · 0 评论 -
线性表—顺序存储结构-顺序表
把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间中。 一般分配空间是需要一些冗余的。 专门开辟一块空间线性表有n个数据 占用空间:n*sizeof(ElemType) 区分线性表和顺序表 线性表是逻辑结构,顺序表是存储结构,是指元素在内存里存储空间是连续的。 顺序表存储类型define MaxSize 50typedef struct {原创 2017-04-24 12:18:49 · 751 阅读 · 0 评论 -
线性表—线性表的合并
假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性 表中的数据元素即为集合中的成员。 编写一个算法求一个新的集合 C=A∪B,即将两个集合的并集放在线性表LC中。 解题思路 LC ← LA LC ← LB中不在LA中的元素 void unionList(List LA,List LB,List &LC) { int lena,i; ElemType e;原创 2017-04-24 12:04:35 · 850 阅读 · 0 评论 -
线性表和顺序表区别
线性表是逻辑概念,只要所有的数据在逻辑上是一维的都可以认为是线性表。线性表包括顺序表(栈,队列等),链表(栈,队列等)。跟线性表相对的概念应该是树或者堆。顺序表是空间概念,指的是所有的数据在存储空间上顺序排列,而跟具体的操作方式无关。与顺序表相对的概念只有链表。转载 2017-04-22 17:23:05 · 5095 阅读 · 0 评论 -
数据结构—链表-循环链表
循环单链表 循环双链表 定义基本和单链表和双链表一样。 只是单链表的最后一个节点的next指向头节点 双链表最后一个节点的next指向头节点,头节点的prior指向最后一个节点 int Equeal(DLinkList *L) { int same=1; //相等的象征 DLinkList *p=L->next; //第一个节点 D原创 2017-05-01 17:27:16 · 341 阅读 · 0 评论 -
数据结构—链表-双链表
typedef struct DNode { ElemType data; struct DNode *prior; struct DNode *next; } DLinkList; 头插法建立双链表 先创建一个空的头节点 typedef struct DNode { ElemType data; struct DNode *prior; struct DNode原创 2017-05-01 17:18:00 · 551 阅读 · 0 评论 -
数据结构—链表—单链表应用-增序排列节点
LinkList *p,*pre,*q; p=L->next->next; L->next->next=NULL; 单节点链表。 我们用p指针指向了第二个节点,然后把第一个节点和头节点分离出来。断掉了这条链。然后用q指向了p->next; 准备工作完成。 while (p!=NULL) { q=p->next; pre=L; while (pre->next!=NUL原创 2017-04-30 19:39:13 · 465 阅读 · 0 评论 -
数据结构—链表-单链表应用-拆分链表
拆分单链表 算法是函数需要三个指针类型的参数,分别是L头指针,指针L1和指针L2 我们先设置一个p指针,他指向L->next,即第一个节点,再定义p和r1两个指针。 首先我们令L1等于L即L1这个指针执行L指向的区域,即L1指向头节点。 再让r1指向L1,现在L,L1,r1都指向头节点了。 我们再给L2即拆分后的一个链表分配内存,此时L2就是一个相应类型的头节点了。L2->next原创 2017-04-30 18:11:43 · 1032 阅读 · 2 评论 -
数据结构—链表-单链表基本操作实现
初始化线性表 L是定义的一个指针 初始化线性表的算法就是 按引用指针的方法,将L引用到函数中,然后在函数中为L指针赋予一片内存,即头节点,然后让L->next指向NULL;销毁线性表 在算法中,定义两个指针,*pre和*p; pre指针指向头节点,p指针指向头节点的下一个节点。 如果我们删除了pre指向的节点的话,我们要用另一个指针记住他的下一个节点,如果没有p指针,我们就将找不原创 2017-04-30 16:07:33 · 508 阅读 · 0 评论 -
数据结构—链表-建立单链表
我们这里的单链表定义为char型,其他类型是一样的做法 s->next=p->next; s这个指针指向的节点就和p的下一个节点连接起来了。 p->next=s; 注意:这两个语句不能交换 然后p->next是一个指针 s也是一个指针 s是一个指向某一个节点的指针。 p->next=s; 代表p->next指向了s指向的节点。不代表p->next和s等价 当s指向其他区域后,p->原创 2017-04-30 14:36:41 · 3423 阅读 · 1 评论 -
数据结构—链表-单链表应用-删除元素最大的节点
难点,当找到这个节点时,你删除他,链表链就断了,所以你不仅要找到这个最大的节点还要记录下来他的前一个节点。 用两个指针,他们相伴而行,其中一个指针指向的是要删除的节点,与此同时,要记录他的上一个节点。因为要用他上一个节点的next指向后一个节点。 我们设置一个pre指针和一个p指针。 此外我们还需要两个指针。他们是maxpre和maxp 他们记录的是到目前为止找到的最大的节点和最大的节点的前原创 2017-04-30 19:03:39 · 2324 阅读 · 0 评论