1, 数据结构三要素: 1,逻辑结构:线性和非线性 2,存储结构:顺序,链式,索引,散列 3,数据运算:算法 具体时间复杂度与问题的规模和初始条件相关,分最佳和最大 2, 线性表: 无头结点: 头插法:s->data=ch;s->next=head;head=s; 尾插法:rear->next=s; ...
分类:
其他好文 时间:
2017-09-23 21:27:30
阅读次数:
219
?注:未经博主同意,不得转载。 链表是另一种形式的链式存储结构,它是线性链表的一种变形。在线性链表中,每个结点的指针都指向它的下一个结点,最后一个结点的指针域为空,表示链表的结束。若使最后一个结点的指针指向头结点,则链表呈环状,这样的链表称为循环链表。 循环链表当然也分为单链表和双向列表。 通常情况 ...
分类:
其他好文 时间:
2017-09-21 21:03:54
阅读次数:
183
#include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h, int x) { SLIST *p, *q, *s; s=(SLIST *)ma... ...
分类:
其他好文 时间:
2017-09-19 20:20:33
阅读次数:
270
输入一个连表的头结点,从尾到头反过来打印出每个结点的值。C#语言实现:publicstaticvoidPrintRev(LinkedList<int>lList)
{
Stack<int>stack=newStack<int>();
foreach(intiteminlList)
{
stack.Push(item);
}
while(stack.Count>0)
{
Console.WriteLine..
分类:
其他好文 时间:
2017-09-17 18:47:03
阅读次数:
85
redis的链表是双向链表,该链表不带头结点,具体如下: 主要总结一下adlist.c和adlist.h里面的关键结构体和函数。 链表节点结构如下: 链表结构如下: 链表迭代器的结构如下: 里面涉及的函数中,增、删的比较简单,就是结构里面没有带头结点,所以需要单独判断一下头结点的特殊情况。另外对于尾 ...
分类:
其他好文 时间:
2017-09-16 23:09:32
阅读次数:
203
1、合并并排序两个单链表: 注意将生成新节点,然后将每个节点的值复制,放入数组中,对每个节点统一排序,然后再把指针指向后面的节点即可,最后只需要返回头节点,因为头结点包含后面所有的节点。 2、括号匹配: 题目: Given a string containing just the character ...
分类:
编程语言 时间:
2017-09-13 15:16:29
阅读次数:
293
习题2.4 递增的整数序列链表的插入(15 分) 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。 函数接口定义: List Insert( List L, ElementType X ); 其中List结构定义如下: typedef struct No ...
分类:
其他好文 时间:
2017-09-12 23:17:07
阅读次数:
2281
来源:https://leetcode.com/problems/reverse-linked-list Reverse a singly linked list. 递归方法:递归调用直到最后一个节点再开始反转,注意保存反转后的头结点返回 Java Python 迭代方法:两个指针从头开始依次反转, ...
分类:
其他好文 时间:
2017-09-10 11:15:58
阅读次数:
134
循环链表 相比单链表,循环链表将最后一个结点的指针指向了头结点。 循环链表里没有空指针,所以在判断结束条件时不是判断指针是否为空,而是判断指针是否等于某固定指针。 单链表里,一个结点只能访问它后面的结点,但是循环链表里它能访问所有结点。 双向链表 指针域记录了结点的上一个结点(前驱结点)和下一个节点 ...
分类:
其他好文 时间:
2017-09-08 18:04:05
阅读次数:
198
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路:迭代版本: 核心思想是中序遍历,头结点需要单独设置flag变量进行初始化。 if(!s.empty()){ if(flag == 1){ head = s.top(); ...
分类:
其他好文 时间:
2017-09-04 13:13:51
阅读次数:
213