数据结构
文章平均质量分 74
parting_soul
大道至简
展开
-
顺序表整体删除某值或某一区间
时间复杂度都为o(n) #include #include #define maxn 111111 typedef struct { int a[maxn]; int len; }sequence_list; void dele(sequence_list *L,int min,int max) //删除顺序表中大于等于min,小于max,的数,时间复杂度o(n) {原创 2015-09-30 13:58:46 · 660 阅读 · 0 评论 -
矩阵的存储
对称矩阵: 当i>=j 时 a[i][j]的地址=a[0][0]的地址+((1+2+...i)*i+j)*L; 即 address(a[i][j])=address(a[0][0])+(1+i)×i/2+j; 当i #include #include #include using namespace std; int *memory(i原创 2015-10-25 20:10:43 · 485 阅读 · 0 评论 -
三维数组
一个三维数组a[i][j][k],数据元素为i*j*k个,在存储空间中顺序连续存储的,我们可以通过数组首地址,通过位移量来访问每一个元素。 假设三维数组每一维的最大长度为n,m,o; 在二维数数组中,我们访问元素是a[i][j]的地址=a[0][0]的地址+i*第一维的长度+j 同理在三维数组中我们可以把二维数组看成一个整体也就是a[i][j,k],这样访问就是 a[i][j,k]的地原创 2015-10-25 17:14:17 · 2382 阅读 · 0 评论 -
汉诺塔
#include #include int cnt; void hangnuo(int n,char x,char y,char z) //x借助y移到z { if(n==1) { printf("%c-->%c\n",x,z); //层数为一,直接从x移到z cnt++; } else { hangnuo(n原创 2015-10-09 01:04:18 · 211 阅读 · 0 评论 -
八皇后
八皇后问题:皇后不能在同一列同一行,斜对角线,此时会互相攻击 思路: 一行一个皇后,一行一行放 这里用到列向量hang[8]数组 ,(hang[0],hang[1],hang[2]....hang[7]) 下标代表行,也代表从第一行到这行放了多少皇后 对角线不能放::对角线斜率为1或者为-1 此时若|k-i|==|hang[k]-j|,则该列不能放 k为行坐标,i是当前要放的原创 2015-10-09 00:57:51 · 253 阅读 · 0 评论 -
字符串的基本操作
顺序表实现: #include #include #include #define maxn 111 typedef struct { char str[maxn]; int len; }seqstr; void strinsert(seqstr *s,int i,seqstr t) //功能:在第i个字符后插入一段字符串 { int k; if(is->len|原创 2015-10-22 21:31:17 · 470 阅读 · 0 评论 -
简单的递归应用
1.找数组中的最大值 顺序查找:复杂度o(n) 其中调用前res的初值应为负无穷 int find_max2(int a[],int l,int n,int res)//复杂度o(n) { if(l==n) return res; int MAX1=find_max2(a,l+1,n,res); res=max(MAX1,a[l]); return res;原创 2015-11-07 15:11:22 · 312 阅读 · 0 评论 -
火车进站问题
#include #include #include #define maxn 1111 /*比当前数要小且在在他后面的数若从大到小排列则符合要求*/ int n,count; int ans[maxn],vis[maxn],num[maxn]; void print();//用来输出全排列中符合要求的个数 void dfs(int k,int cnt) //深搜枚举1-n的全排列,k为数组下标原创 2015-09-17 10:49:47 · 559 阅读 · 0 评论 -
栈的应用
//括号匹配 #include #include #include #define MAXSIZE 100 typedef int datatype; typedef struct { datatype a[MAXSIZE]; int top; }sequence_stack; void init(sequence_stack *st) { st->top=0; } datatype原创 2015-09-16 23:31:32 · 404 阅读 · 0 评论 -
稀疏矩阵的快速转置
#include #include #define maxn 111 using namespace std; int a[maxn][maxn],n,m,cnt=1; typedef struct { int x,y,val;//x为横坐标,y为纵坐标,val为值 }matrix; void Scan()//输入矩阵 { for(int i=1;i<=n;i++)原创 2015-11-01 00:00:17 · 595 阅读 · 0 评论