
Data Structures
lemda
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
复杂链表的复制
一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个random指针指向这个链表中的一个随机节点或NULL,现在要求实现复杂这个链表,返回复制后的新链表。/* CLNode.h */#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>...原创 2018-09-12 10:51:25 · 116 阅读 · 0 评论 -
牛客网:复杂链表的复制
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:复制并插入:复制旧链表的每个结点,如:复制A得到A1,将A1插入A的后面; 遍历链表,补充新结点的 random 域,如:A1.random = A....原创 2019-08-10 17:32:52 · 223 阅读 · 0 评论 -
无头双向链表的相关操作(Java实现)
首先介绍一下双向链表:双向链表也叫双链表,是链表的一种,它的每个Node结点都包含3个信息,分别是:数据域、前驱以及后继。与单链表的不同就是,它多了一个描述当前结点前驱的属性。下面主要说的是不带头结点的,假设有一组数据(10, 20, 18, 46, 2),它们以双向链表的形式存储 ,那么就是下面这个样子:(链表中的第一个结点默认是头结点,所以head指向第一个结点;链表的最后一个...原创 2019-08-09 21:43:04 · 391 阅读 · 0 评论 -
LeetCode单链表相关题目
目录1.移除链表元素(删除链表中等于给定值val的所有节点)2.反转一个链表3.找出链表的中间结点4.输出链表中倒数第k个结点5.合并两个有序链表,合并后依然有序6.找出两个单链表相交的起始结点1.移除链表元素(删除链表中等于给定值val的所有节点)输入:1->2->6->3->4->5->6,val=6输出:1->2...原创 2019-07-06 12:23:52 · 160 阅读 · 0 评论 -
单链表的相关操作(用Java语言实现)
下面说的是无头非循环单向链表:假设有一组数据为(10,15, 1, 68, 39),它们以单链表的形式存储,那么应该是这样的:结点中包含数据域和后继两个属性,链表的第一个元素默认为头结点,由head指向。下面是单链表的相关操作:package singleList;//无头单向链表public class SingleList{ class Node{ ...原创 2019-07-06 10:54:23 · 262 阅读 · 0 评论 -
二叉搜索树的相关操作(增删查改)---递归实现
//BSTree_R.h//递归实现#pragma once#include <stdio.h>#include <stdlib.h>#include <windows.h>typedef struct BSTreeNode{ int key; struct BSTreeNode *left; struct BSTreeNode *ri...原创 2018-12-27 21:58:02 · 225 阅读 · 0 评论 -
二叉搜索树的相关操作(增删查改)---非递归实现
//BSTree.h//非递归实现#pragma once#include <stdio.h>#include <stdlib.h>#include <windows.h>typedef struct BSTreeNode{ int key; struct BSTreeNode *left; struct BSTreeNode *rig...原创 2018-12-27 21:54:38 · 239 阅读 · 0 评论 -
单链表的基本操作(增删查改)
SingleLish.h //头文件原创 2018-12-27 21:41:42 · 299 阅读 · 0 评论 -
合并两个有序链表,合并后依然有序
//合并两个单链表,合并后依然有序(升序)ListNode * MergeOrderList(ListNode *list1, ListNode *list2){ //List1是链表一的第一个节点 ListNode *cur1 = list1; ListNode *cur2 = list2; ListNode *result = NULL; ListN...原创 2018-09-12 15:50:37 · 1017 阅读 · 0 评论 -
判断元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)
/* Stack.h */#pragma once#include <stdio.h>#include <string.h>#include <assert.h>typedef char StackDataType;#define MAX_SIZE (100)typedef struct Stack { Stack...原创 2018-09-12 15:45:08 · 1094 阅读 · 0 评论 -
逆置单链表
#pragma once#include <stdio.h>#include <assert.h>#include <malloc.h>typedef int DataType;typedef struct ListNode{ DataType data; struct ListNode *next;}ListNode;st...原创 2018-09-12 15:10:24 · 2052 阅读 · 0 评论 -
单链表实现约瑟夫环(JosephCircle)
#include <stdio.h>#include <assert.h>#include <malloc.h>typedef int DataType;typedef struct ListNode{ DataType data; struct ListNode *next;}ListNode;static ListNode ...原创 2018-09-12 14:57:26 · 363 阅读 · 0 评论 -
排序算法(直接插入排序、希尔排序、选择排序、冒泡排序、快速排序)
1. 直接插入排序假设有一组待排序数据 {4, 8, 2, 1, 45, 13, 2}。算法思路:直接插入排序就是像整理扑克牌一样,把待排序的元素插入到已经排好序的元素中。(每次拿出无序区间中的第一个数,插入到有序区间的合适的位置)具体实现:当插入第 i ( i>=1 ) 个元素时,前面的 array[0],arr[1],... arr[i-1] 已经排好序,此时 ar...原创 2019-08-17 18:08:53 · 1314 阅读 · 0 评论