![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数据结构
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 · 264 阅读 · 0 评论 -
栈的实现
栈的定义:栈是限制在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。栈的操作:1.创建栈2.销毁栈3.清空栈4.进栈5.出栈6.获取栈顶元素7.获取栈的大小栈的实现方式:1.顺序存储实现:利用数组,只对a[0]进行操作 。下面通过复用顺序链表代码实现。2链式栈原创 2017-01-23 11:49:11 · 306 阅读 · 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 · 211 阅读 · 0 评论 -
汉诺塔的实现
从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘子只能在小盘子的下面.如果有3个盘子, 大中小号, 越小的越在上面, 从上面给盘子按顺序编号 1(小),2(中),3(大), 后面的原理解析引用这里的编号.1.假设只有一个盘子的时候, 盘子数量 N=1只有一个步骤 将第1个盘子从A移动原创 2017-02-12 19:10:56 · 314 阅读 · 0 评论 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。代码如下:#include原创 2017-02-19 17:21:10 · 255 阅读 · 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 · 214 阅读 · 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 · 328 阅读 · 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 · 311 阅读 · 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 · 442 阅读 · 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 · 414 阅读 · 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 · 231 阅读 · 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 · 276 阅读 · 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 · 330 阅读 · 0 评论