
数据结构
数据结构
5念since
最重要的事情只有一件,变强!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线性表的相关操作
2.1.c #include <stdio.h> #include "2.1.h" List* List_Create() { return NULL; } void List_Destroy(List* list) { } int List_Length(List* list) { return 0; } ListNode* List_Delete(List*...原创 2017-01-06 17:43:46 · 294 阅读 · 0 评论 -
栈的实现
栈的定义: 栈是限制在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。 栈的操作: 1.创建栈 2.销毁栈 3.清空栈 4.进栈 5.出栈 6.获取栈顶元素 7.获取栈的大小 栈的实现方式: 1.顺序存储实现:利用数组,只对a[0]进行操作 。下面通过复用顺序链表代码实现。 2链式栈原创 2017-01-23 11:49:11 · 340 阅读 · 0 评论 -
双向链表
#include #include #include "DLinkList.h" typedef struct _tag_DLinkList { DLinkListNode header; DLinkListNode* slider; int length; } TDLinkList; DLinkList* DLinkList_Create() // O(1) {原创 2017-01-22 17:22:59 · 237 阅读 · 0 评论 -
汉诺塔的实现
从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.如果有3个盘子, 大中小号, 越小的越在上面, 从上面给盘子按顺序编号 1(小),2(中),3(大), 后面的原理解析引用这里的编号. 1.假设只有一个盘子的时候, 盘子数量 N=1 只有一个步骤 将第1个盘子从A移动原创 2017-02-12 19:10:56 · 344 阅读 · 0 评论 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 代码如下: #include原创 2017-02-19 17:21:10 · 283 阅读 · 0 评论 -
循环链表
通过对单链表进行改进实现循环链表解决约瑟夫环问题。对其表头元素进行处理成环。 main.c #include #include #include "CircleList.h" struct Value { CircleListNode header; int v; }; /* run this program using the console pauser or add原创 2017-01-11 18:03:28 · 241 阅读 · 0 评论 -
静态链表的创建
StaticList* StaticList_Create(int capacity) { TStaticList* ret = NULL; int i = 0; if(capacity >= 0) { ret = (TStaticList*)malloc(sizeof(TStaticList) + sizeof(TStaticListNode) * (capacity + 1))原创 2017-01-11 08:54:55 · 349 阅读 · 0 评论 -
静态链表的清空
void StaticList_Clear(StaticList* list) { TStaticList* sList = (TStaticList*)list; int i = 0; if( sList != NULL) { sList->header.data = 0; sList->header.next = 0; for(i=1;icapacity;i++原创 2017-01-11 08:57:01 · 335 阅读 · 0 评论 -
所有情况下全排列的实现
全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。我们在此需要考虑重复情况。应用递归算法实现排序。 1.如下程序,可实现全排列,但是缺少判断函数不能处理重复情况。 #include int permutation( char s[], int b, int e ) { if( 0 <=b && b <= e) { if( b == e ) { p原创 2017-02-05 10:58:10 · 473 阅读 · 1 评论 -
静态链表的插入
int StaticList_Insert(StaticList* list,StaticListNode* node,int pos) { TStaticList* sList = (TStaticList*)list; int ret = (sList != NULL); int index = 0; int i = 0; int current = 0; ret = ret原创 2017-01-08 19:56:24 · 445 阅读 · 0 评论 -
线性表的链式存储
#include #include #include "LinkList.h" typedef struct _tag_LinkList { LinkListNode header; int length; }TLinkList; LinkList* LinkList_Create() { TLinkList* ret = (TLinkList*)mall原创 2017-01-07 19:24:27 · 253 阅读 · 0 评论 -
线性表的顺序存储
#include #include #include "SeqList.h" typedef unsigned int TSeqListNode; typedef struct _tag_SeqList { int capacity; int length; TSeqListNode* node; } TSeqList; SeqList* SeqL原创 2017-01-07 19:23:09 · 331 阅读 · 0 评论 -
链表的基本操作
链表的基本操作: 链表的创建、遍历、插入、删除、销毁、逆置 #define _CRT_SECURE_NO_WARNINGS #include #include #include typedef struct Node{ int node; struct Node *next; }SList; SList *SList_Creat(); //创建链表 int SLis原创 2017-08-18 09:39:13 · 358 阅读 · 0 评论