![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
海边的卡卡
一个有趣的人
展开
-
递归与尾递归
1、递归 关于递归的概念,我们都不陌生。简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 用递归需要注意以下两点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。递归一般转载 2017-11-18 19:21:47 · 361 阅读 · 0 评论 -
循环队列的顺序存储实现
/*用数组实现队列的顺序存储*/#include <stdio.h>#define MaxSize 20#define ElementType int#define ERROR -1 struct QNode{ ElementType Data[MaxSize]; int front; int rear;}; typedef struct QNode *Queu原创 2017-11-20 14:51:55 · 296 阅读 · 0 评论 -
单链表实现队列链式存储
/*用单链表实现队列的链式存储*/ /* fron指向单链表的头结点,rear指向单链表的尾结点 因为单链表的头结点做插入,删除都比较方便,但是尾结点做插入方便,删除不方便 故我们让front指向头结点利于做删除操作,让rear指向尾结点利于做插入操作 */#include <stdio.h>#include <malloc.h> #define ElementType i原创 2017-11-20 14:53:05 · 6881 阅读 · 0 评论 -
静态查找方法(顺序查找与二分查找)
/*静态查找的几种方法*/#include <stdio.h>#define MaxSize 20typedef struct LNode *List;struct LNode{ ElementType Data[MaxSize]; int length;}; /*顺序查找(Sequential Search),采用了建立哨兵的查找思想,最好查找复杂度O(1),最坏为O(n)原创 2017-11-20 14:55:36 · 835 阅读 · 0 评论 -
树的定义及术语
树的定义n个结点构成的有限集合,当n=0时,称为空树 树有一个称为根Root的特殊结点,用r表示 其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm。其中每个集合本身又是一棵树,称为原来树的子树(SubTree) 子树是不相交的 除了根节点以外,每个结点有且仅有一个父结点;一棵N个结点的树有N-1条边 树的术语结点的度(Degree):结点的子树个数原创 2017-11-20 14:58:38 · 310 阅读 · 0 评论 -
二叉树的定义,性质及存储
二叉树的定义二叉树是一个有穷的结点集合 这个集合可以为空 若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成 二叉树有五种基本形态:空结点,只有一个根结点,只有根结点和左子树,只有根结点和右子树,有根结点和左子树及右子树 注:二叉树的子树有左右顺序之分 特殊二叉树:1.斜二叉树(Skewed Binary Tree):所有二叉树树只有左儿子或者只原创 2017-11-20 15:02:13 · 679 阅读 · 0 评论 -
二叉树的遍历(递归实现)
/*二叉树的遍历-递归实现*/typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; };/* 先序遍历 访问根结点原创 2017-11-20 15:03:09 · 378 阅读 · 0 评论 -
二叉树的遍历(非递归实现)
/*二叉树的遍历-非递归(堆栈实现)*/typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ ElementType Data; BinTree Left; BinTree Right;};/*中序遍历的非递归遍历算法*/void InO原创 2017-11-20 15:03:52 · 250 阅读 · 0 评论 -
二叉树的层序遍历
/*二叉树的层序遍历*/typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ ElementType Data; BinTree Left; BinTree Right;};/* 二叉树遍历的核心问题:二维结构的线性化 访问左原创 2017-11-20 15:04:41 · 292 阅读 · 0 评论 -
堆栈的单链表实现
#include <stdio.h>#include <malloc.h>#define ElementType int/*堆栈的链式存储实现*/ typedef struct SNode *Stack;struct SNode{ ElementType Data; struct SNode *Next;}; Stack CreateStack(){ //构造一个堆原创 2017-11-20 14:50:58 · 455 阅读 · 0 评论 -
十字链表存储稀疏矩阵
/*广义表的定义 typedef struct GNode *GList;struct GNode{ int Tag; //标志域:0表示结点是单元素,1表示结点是广义表 union{ //子表指针域SubList与单元素数据域Data复用,即共用存储空间 ElementTtype Data; GList SubList; }URegi原创 2017-11-18 21:39:55 · 1067 阅读 · 0 评论 -
PrintN的循环执行和递归执行
/*printN是一个打印从1-N所有数字的函数*/#include <stdio.h>/*循环执行*/void printn(int N){ int i; for(i=0;i<N;i++){ printf("%d\n",i); } return;}/*递归执行*//*递归执行代码简单但是占用空间资源过大,若递归调用的次数N是较大数量级则不适合用递归*/void原创 2017-11-18 20:09:56 · 4098 阅读 · 0 评论 -
计算多项式的值(秦九昭算法,clock()函数的使用)
//假设多项式f(x)=0*x^0+1*x^1+2*x^2+...+9*x^9#include <stdio.h>#include <time.h>#include <math.h>clock_t start,stop;double duration;#define MAXN 10//多项式最大项数,即多项式阶数+1 #define MAXK 1e7//被测函数最大重复调用次数 //一原创 2017-11-18 20:15:00 · 1181 阅读 · 0 评论 -
最大子列和(算法复杂度优化)
#include <stdio.h>#include <math.h>#include <time.h>#define MAXK 1e7clock_t start,stop;double duration;/*一种复杂度为O(n^3)的暴力解法*/ int MaxSubseqSum1(int A[],int N) { int ThisSum,MaxSum=0; int i,j原创 2017-11-18 20:23:18 · 286 阅读 · 0 评论 -
两个多项式相加及相乘
#include <stdio.h>#include <malloc.h> typedef struct PolyNode *Polynomial; struct PolyNode{ int coef; int expon; Polynomial link; }; void Attach(int c,int e,Polynomial *pRear) //pRear是指原创 2017-11-18 20:27:23 · 3068 阅读 · 0 评论 -
输出精度问题
#include <stdio.h> int main() { int a=1234; float b=123.456;double c=12345.54321;printf("\n%2d,%2.1f,%2.11f",a,b,c);}/* %d 有符号10进制整数 %i 有符号10进制整数 %o 有符号8进制整数 %u 无符号10进制整数 %x 无符号的16进原创 2017-11-18 20:31:41 · 558 阅读 · 0 评论 -
顺序表
#include <stdio.h>#include <malloc.h>#define MAXSIZE 20 typedef struct LNode *List;struct LNode{ int Data[MAXSIZE]; int Last;}; struct LNode L;List PtrL;List MakeEmpty(){ List PtrL;原创 2017-11-18 20:37:32 · 176 阅读 · 0 评论 -
链表
#include <stdio.h>#include <malloc.h> typedef struct LNode *List;struct LNode{ int Data; List Next;};struct LNode L;List PtrL;/*用链表遍历的方法求表长,时间复杂度为O(n)*/ int Length(List PtrL){ List p原创 2017-11-18 20:38:16 · 130 阅读 · 0 评论 -
一个数组实现两个堆栈
/*堆栈的定义及入栈,出栈操作#define MAXSIZE 100typedef struct SNode *Stack;typedef struct SNode{ ElementType Data[MAXSIZE]; int Top;}; //入栈操作 void Push(Stack PtrS,ElementType item){ if(PtrS->Top==MA原创 2017-11-20 14:50:02 · 578 阅读 · 0 评论