
数据结构和算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
用栈实现括号匹配
输入左括号如'(','['则进栈 右括号如')',']'则从栈里取出一个括号 看着两个括号是否匹配#include#include#define SIZE 6//define the struct of stacktypedef struct stack{ char* element; int top; int size;}Stack;//initialize stack原创 2015-10-29 19:54:54 · 678 阅读 · 0 评论 -
对稀疏矩阵压缩后转置
#include#include//define struct Arr{ int i,j; int data;};struct ST{ Arr* data; int i,j,num;};//矩阵压缩 ST* change(int arr[][3],int x,int y){ ST *M; int i,j; int count=0; M=(ST*)mallo原创 2015-10-29 19:57:42 · 442 阅读 · 0 评论 -
最短路径的实现
下面是一个带权值的连通图,就用这个图为例子来实现最短路径原理就不在说了 百度上面有 直接从代码开始首先定义头文件和需要的数据map表示带权值的连通图path[i]表示从起点到i路径上所有的顶点 如经过j顶点,则path[i][起点],path[i][j],path[i][i]都为1其余的都为0dis表示从起点到每个顶点的最短路径find表示是否找到起点到其他节点的最短路原创 2015-10-30 11:27:29 · 534 阅读 · 0 评论 -
静态链表的实现
#include#include#define SIZE 6//define struct of static listtypedef struct stlist{ int* content; int* next; int* exist;} StList;StList* initList(StList* tempPtr){ int i; //allocation sp原创 2015-10-29 19:11:13 · 1034 阅读 · 0 评论 -
第一个只出现一次的字符位置
题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始 思路: 依次遍历字符串 如果c[100]没有这个字符就把这个字符加入到c[100]中并且count中对应++; 如果c[100]中存在这个字符 则返回下标class Solution {public: int FirstNotRepeati原创 2016-04-10 12:52:29 · 419 阅读 · 0 评论 -
表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。思路:简单的判断class Solution {public: string s; int flag=0; bool i原创 2016-04-10 12:55:42 · 476 阅读 · 0 评论 -
正则表达式匹配
题目描述请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配思路:用两个指针分别指向字符串和匹配串 如果能够匹配指针后移 不能匹配的情况比较复杂 要考虑有没原创 2016-04-10 13:02:19 · 562 阅读 · 0 评论 -
构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 思路: 类似于动态规划 用两个数组保存 v1中v1[i]保存前i-1个数的乘积 v1[0]=1 然后从前往后遍历v[i]=v[i-1]*A[i] v2中v2[i]保存后面i+1到n个数的乘积 v2[原创 2016-04-10 13:08:53 · 387 阅读 · 0 评论