随笔分类 - 数据结构与算法
摘要:单链表逆转 本题要求实现一个函数,将给定的单链表逆转 函数接口定义 List Reverse(List L); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node{ ElementType Data; /* 存储结点数据 */ PtrT
        阅读全文
                
摘要:自测-1 打印沙漏 要求写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定
        阅读全文
                
摘要:#include<stdio.h> #include<malloc.h> #include<stdlib.h> struct AvlNode; typedef struct AvlNode *Position; typedef struct AvlNode *AvlTree; typedef cha
        阅读全文
                
摘要:Divide-and-conquer algorithm in multiplication \[ x^n=x\cdot x\cdot x\cdots x \] 时间复杂度为O(n),有n-1个乘法 \[ x^n=x^\frac n2\cdot x^\frac n2\qquad\mbox{if x 
        阅读全文
                
摘要:BinarySearchTree #include<stdlib.h> #include<malloc.h> #include<stdio.h> struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *
        阅读全文
                
摘要:一元多项式的加法与乘法运算 题意理解 设计函数分别求两个一元多项式的乘积与和 求解思路 多项式表示 程序框架 读多项式 加法实现 乘法实现 多项式输出 多项式的表示 仅表示非零项 数组 编程简单、调试容易 需要事先确定数组大小 一种比较好的实现方法是:动态数组 链表 动态性强 编程略为复杂、调试比较
        阅读全文
                
摘要:多项式加法运算 采用不带头结点的单向链表,按照指数递减的顺序排列各项 struct PolyNode{ int coef;//系数 int expon;//指数 struct PolyNode *link;//指向下一个结点的指针 }; typedef struct PolyNode *Polyno
        阅读全文
                
摘要:队列 队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一端插入,而在另一端删除 数据插入:入队(AddQ) 数据删除:出队列(DeleteQ) 先来先服务 先进先出:FIFO 类型名称:队列(Queue) 数据对象集:一个有0个或多个元素的有穷线性表 操作集:长度为MaxSize
        阅读全文
                
摘要:堆栈 堆栈的抽象数据类型描述 类型名称:堆栈(Stack) 对象数据集:一个有0个或多个元素的有穷线性表 操作集:长度为MaxSize的堆栈$S\in Stack$,堆栈元素$item\in ElementType$ Stack CreateStack(int MaxSize):生成空堆栈,其最大长
        阅读全文
                
摘要:广义表 广义表是线性表的推广; 对于线性表而言,n个元素都是基本的单元素; 广义表中,这些元素不仅可以是单元素也可以是另一个广义表; typedef struct GNode *GList; struct GNode{ int Tag; //标志域:0表示结点是单元素,1表示结点是广义表 union
        阅读全文
                
摘要:线性表 什么是线性表 “线性表(Linear List)”:由同类型数据元素构成有序序列的线性结构 表中元素个数称为线性表的长度 线性表没有元素时,称为空表 表起始位置称表头,表结束位置称表尾 线性表的抽象数据类型描述 类型名称:线性表 数据对象集:线性表是$n(\ge0)\(个元素构成的有序序列\
        阅读全文
                
摘要:求最大子列和 给定$N$个整数的序列${A_1,A_2,\cdots,A_N}$,求函数$f(i,j)=\max{{0,\sum_{k=i}^jA_k}}$ 算法一 int MaxSubseqSum1(int A[], int N) {/*三重嵌套循环,时间复杂度是O(N^3)*/ int This
        阅读全文
                
摘要:计算给定多项式在给定点$x$处的值 方法1 \(f(x)=a_0+a_1x+\cdots+a_{n-1}x^{n-1}+a_nx^n\) double f_1(int n, double a[], double x) { int i; double p = a[0]; for (i = 1; i <
        阅读全文
                
摘要:实现函数PrintN,能顺序打印从1到N的全部正整数 循环写法 void printN_1(int N) { for (int i = 1; i <= N; i++) { printf("%d\n", i); } return; } 递归写法 void printN_2(int N) { if (N
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号