
数据结构
myzts
这个作者很懒,什么都没留下…
展开
-
C语言中传值问题
网上看了一些,自己归纳了一下传值大概分为已下3种:1:值传递 2:地址传递 3:引用传递1:值传递转载 2014-11-30 00:36:14 · 547 阅读 · 0 评论 -
归并排序
1.合并两个有序数组的函数,n表示a数组长度,m表示b数组长度,c表示最终的a和b所有元素有序(递增)排列的数组 void sortedarray_merge(int a[],int n,int b[],int m,int c[]){ int i=1,j=1,k=1; while (i<=n && j<=m) { if (a[i]<b[j]) {原创 2017-05-10 00:16:25 · 394 阅读 · 0 评论 -
快速排序
快速排序是基于分治的思想,每次都选择一个基准数,使得左边的都小于基准数,右边都大于基准数(默认基准数为每个排列第一个数),所以基本的思想是用两个指针,分别从最左边和最右边开始寻找,两个如果都找到了话就交换两个数字,需要注意的是,先从左边扫?还是先从右边扫,考虑21(基准数为2)这种情况,如果先从左边扫,寻找大于基准数的数字,找不到.算法结束,如果先从右边扫,寻找小于基准数的数字,找到了为1,交换变原创 2017-05-09 17:04:49 · 325 阅读 · 0 评论 -
指针详细总结
int *p;int (*p)[10];int *p[10]1.把声明中指针变量的名字去掉就可以得到指针的类型,比如int *p,去掉p,指针类型为int *,int (*p)[10]指针类型为int (*)[10]注意,int (*)[10]代表的是一个指向含有是个元素的数组.原创 2017-04-24 20:07:28 · 365 阅读 · 0 评论 -
链表的总结(链表排序、翻转、删除节点)
简要说下思路:node* sort_linklist(node *head){//链表排序(类比选择排序) node *sortedarray,*previous,*temp; for (int i=1; i<=n; i++) { sortedarray=creatnode(); sortedarray->data=selectmm_li原创 2017-04-22 16:55:32 · 366 阅读 · 0 评论 -
qsort(快速排序)用法
首先需要写一个比较的函数comp#include "stdio.h"#include "stdlib.h"int comp(const void *a,const void *b){ return *(int*)a-*(int*)b;//上面为ab,这个地方也为ab,即从小到大,如果方向不这样比如ab,ba就是从大到小}int main(){ int a[3],i;原创 2014-12-10 20:29:10 · 609 阅读 · 0 评论 -
对int和void递归的总结
1void#include "stdio.h"void abc(int n){ printf("%d\n", n); if (n > 0) { abc(n - 1); printf("%d\n",n);\\从这个地方开始就是abc下面 }}int main(){ abc(2); system原创 2014-12-08 16:17:34 · 2659 阅读 · 0 评论 -
大数乘法
# include# include# includevoid multiply(char* a,char* b,char* c){ int i,j,ca,cb,* s; ca=strlen(a); cb=strlen(b); s=(int*)malloc(sizeof(int)*(ca+cb)); for (i=0;i转载 2014-12-22 18:37:02 · 364 阅读 · 0 评论 -
判断字符回文
int isSymmetry(char str[]){ int length=strlen(str); if(length==0)return -1; for (int i=0;i { if(str[i]!=str[length-i-1])return 0; } return 1;}http://blog.youkuaiyun.com/cyhleo/article/det转载 2014-12-22 11:21:04 · 391 阅读 · 0 评论 -
2014NEUQ图灵杯(C语言解法)
已下都是参考他人答案加入自己看法的代码C题第一是把题目看错了,本以为是一个数经过多少次变化能变得89,其实是小于n的数不包括89的数,能变到89的总和(可悲的语文成绩)#include #include #include long int pf(long int c){ int h=0,b; while(c) { b=c%10; h+=b*转载 2014-12-01 16:22:35 · 520 阅读 · 0 评论 -
*a,与a[]区别
#include #include int main(){ char *a="abcdefg"; *(a+3)='n'; printf("%c",*(a+3)); system("pause"); return 0;}运行这个程序会报错而运行下面一个程序#include #include int main(){ char a[]="abcdefg";转载 2014-11-30 13:40:56 · 2387 阅读 · 0 评论 -
最小(大)堆,堆操作
首先介绍一下堆.堆是一种特殊的完全二叉树,最小堆满足条件是所有父节点的值都比子节点要小,最大堆满足条件是所有父节点的值都比子节点要大.则最小堆根节点的值是最小的,最大堆根节点的值是最大的.由上不难知道,最小(大)堆个数不唯一.#include "iostream"using namespace std;const int maxn=1000;int h[maxn];int n;原创 2017-05-09 00:11:51 · 460 阅读 · 0 评论