
数据结构
文章平均质量分 74
parting_soul
大道至简
展开
-
顺序表整体删除某值或某一区间
时间复杂度都为o(n)#include#include#define maxn 111111typedef 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 · 686 阅读 · 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#includeusing namespace std; int *memory(i原创 2015-10-25 20:10:43 · 535 阅读 · 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 · 2517 阅读 · 0 评论 -
汉诺塔
#include#includeint 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 · 229 阅读 · 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 · 279 阅读 · 0 评论 -
字符串的基本操作
顺序表实现:#include#include#include#define maxn 111typedef 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 · 527 阅读 · 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 · 336 阅读 · 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 · 579 阅读 · 0 评论 -
栈的应用
//括号匹配#include#include#include#define MAXSIZE 100typedef 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 · 432 阅读 · 0 评论 -
稀疏矩阵的快速转置
#include#include#define maxn 111using 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 · 636 阅读 · 0 评论