单链表 # 实现单链表 class Node(object): '''定义一个节点''' def __init__(self,data): # 因为每次都需要生成一个节点,写到类里面便于保存 self.data = data # 保存节点的值 self.next = None # 默认将节点的指向为 ...
分类:
其他好文 时间:
2020-07-26 00:06:05
阅读次数:
67
1,单链表分为带头结点和不带头结点,带头节点的好处,只有实际写代码后才能体会出来。可以类比顺序表中的哨兵 好处: 1,第1个位置的插入、删除更加方便,带来操作上的统一。 2,对于头插法: 不带头结点的链表,插入第一个结点时,需要特殊处理,删除操作类似. 3,优势2:统一空表和非空表的处理 举例:无头 ...
分类:
其他好文 时间:
2020-07-24 16:29:50
阅读次数:
59
为了方便,创建头文件ElemType规定操作状态码和数据元素类型以及用于数据元素类型的匹配函数 typedef double ElemType; //操作成功 #define OK 1 //操作错误 #define ERROR 0 //操作异常 #define OVERFLOW -2 //定义元素类 ...
分类:
编程语言 时间:
2020-07-23 16:26:16
阅读次数:
65
单链表介绍 单链表(带头结点)逻辑结构示意图如下: 链表是有序的列表,但是它在内存中是存储如下所示(真实存储结构): (1)链表是以节点的方式来存储 (2)每个节点包含data域,next域:指向下一个节点。 (3)如图:发现链表的各个节点不一定是连续存储。 (4)链表分带头节点的链表和没有头节点的 ...
分类:
其他好文 时间:
2020-07-22 20:09:13
阅读次数:
69
代码: /*单链表(含头结点)*/ #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LNode{ ElemType data; //数据域 struct LNode *next; // 指针域 }LN ...
分类:
其他好文 时间:
2020-07-22 11:28:44
阅读次数:
101
1、链表是通过“指针”将一组零散的内存块串联起来的数据结构2、链表可以分为单链表、双向链表和单/双向循环链表2.1、删除链表中等于某个值的节点,单链表和双向链表的时间复杂度一样2.2、由于双向列表可以直接找到前驱结点,所以删除指定的节点,双向链表比单向链表高;同时在链表的某个指定结点前面添加一个结点 ...
分类:
编程语言 时间:
2020-07-22 02:11:20
阅读次数:
69
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode* next; //next是一个指向结构体类型的指针, LNode* 是一个指针数据类型类似int ...
分类:
编程语言 时间:
2020-07-19 23:54:49
阅读次数:
96
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode* next; }LNode,*LinkList; LinkList List_TailInsert ...
分类:
编程语言 时间:
2020-07-19 23:53:50
阅读次数:
108
带头结点的双循环链表 L 为空表的条件是:L->next==L && L->prior==L 在单链表中设置头结点的作用是主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除第一个结点不必另作判断。另外,不论链表是否为空,链表指针不变。在单链表 p 结点之后插入s 结点的操作是 s->nex ...
分类:
其他好文 时间:
2020-07-19 23:13:51
阅读次数:
56
反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路:双指针迭代。(如图) 实现代码: //双指针迭代法 public ListNode reverseList(ListNode head) { ListNode prev ...
分类:
其他好文 时间:
2020-07-19 00:40:33
阅读次数:
70