数据结构
lm_123_456
本人热爱学习新技术,有良好的自学能力,热爱编程,有责任心,执行能力强,对待生活积极向上,乐观,为人诚恳,积极接受困难和挑战
展开
-
数据结构之单链表的实现
单链表: 特点: 链表的链接方向是单向的; 链表是由节点构成,每个节点由两部分(节点数据和指向下一节点的指针);> 链表的结构体及变量重定义如下:#ifndef LIST_H_#define LIST_H_#define ONE 1#define ZERO 0#define TWO 2//const int TRUE = 1;//const int FA原创 2016-03-29 23:58:23 · 411 阅读 · 0 评论 -
Catalan数—求解n个节点能组成的二叉树个数问题
1.catalan简介 卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名。历史上,清代数学家明安图(1692年-1763年)在其《割圜密率捷法》最早用到“卡塔兰数”,远远早于卡塔兰。有中国学者建议将此数命名为“明安图数”或“明安图-卡塔兰数”。卡塔兰数的一般公式为 C(n,2n)/(n+1)。 2.性质 令h(0)=1,h(1)转载 2016-08-27 09:02:34 · 916 阅读 · 0 评论 -
常见排序的最好,平均以及最坏时间复杂度
下面是常用排序的时间复杂度的比较总结,希望可以帮助到大家哦^_^原创 2016-08-06 20:11:17 · 12118 阅读 · 1 评论 -
数据结构之希尔排序
希尔排序的思想是先将待排序列分割成若干个子序列分别进行插入排序,待整个序列基本有序时,再对整个序列进行直接插入排序。其实现如下:void shell_sort(int *array, int length){ int gap = 0; int i = 0; int j = 0; int value = 0; for(gap = length / 2; gap原创 2016-07-24 23:58:49 · 224 阅读 · 0 评论 -
数据结构之插入排序
插入排序就是将元素插入已经排好序的序列中。其实现如下:void insert_sort(int *array, int length){ int i = 0; int value = 0; int j = 0; for(i = 1; i < length; ++i) { value = array[i]; for(j = i -原创 2016-07-24 23:47:02 · 193 阅读 · 0 评论 -
数据结构之选择排序<select_sort>
选择排序其实就是将待排序列的第一个记录标记为最小,然后将其与剩余的其他记录比较找到最小的并交换,然后将标记后移并和剩余的其他记录比较其实现如下:void select_sort(int *array, int length){ int min_index = 0; //标记最小值下标 int i = 0; int j = 0; int temp = 0;原创 2016-07-21 10:15:16 · 423 阅读 · 0 评论 -
数据结构之顺序表的实现
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。以下是用C++实现的顺序表的接口操作: 其.cpp文件如下:#include <stdlib.h>#include "test.h"int main(){ Seqlis原创 2016-04-05 22:15:53 · 555 阅读 · 0 评论 -
数据结构之队列的实现
利用双端链表实现队列的基本操作队列的结构体及其接口:#ifndef _QUEUE_H_#define _QUEUE_H_#include "dlist.h"typedef struct Queue{ Dlist *dlist;}Queue;Queue *init_queue(void); //队列的初始化void destroy_queue(Queue **queue); //队列原创 2016-03-30 10:40:31 · 400 阅读 · 0 评论 -
数据结构之栈的实现
利用双端链表实现栈的基本操作栈的结构体及接口定义:#ifndef STACK_H_#define STACK_H_#include "dlist.h"#include "tools.h"typedef struct Stack{ Dlist *dlist;}Stack;Stack *init_stack(void); //栈的初始化void destroy_stack(Sta原创 2016-03-30 09:46:30 · 320 阅读 · 0 评论 -
数据结构之双端(通用)链表的实现
从单链表可以了解到,若是要添加一个链表元素除第一个元素外其他都必须将链表遍历一遍才可以添加;当数据量比较大时向尾部添加元素就比较麻烦,于是就出现了双端链表; 双端链表和单链表相比多了一个指向尾节点的指针,对于进行尾部插入方便了很多;以下是双端链表的实现:双端链表的链表控制信息及其链表节点信息:#ifndef _DLIST_H_#define _DLIST_H_#include "too原创 2016-03-30 07:20:07 · 639 阅读 · 0 评论 -
c语言中__attribute__的意义
我们在进行定义数据结构计算数据结构大小的时候,或者进行网络通讯的socket发送数据的时候,都会遇到一个共同的问题:数据对齐问题。这个问题是硬件为提高访问数据的效率,引出的问题,这里就不具体说这样为什么可以提高数据的访问效率,有兴趣的人,网上都有。既然这个问题是实实在在存在的,并且软件发展了这么多年,也肯定有破解之道,下面就简单的介绍常见的3种方法:手动对齐,根据自己定义的数据结构,然后根据大小,转载 2017-06-16 17:38:10 · 759 阅读 · 0 评论