自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 归并排序非递归算法

算法代码void Merge(ElemType A[],ElemType B[], int low, int mid, int high){ int i, j, k; for (k = low; k <= high; k++) B[k] = A[k]; for (i = low, j = mid + 1, k = i; i <=mid&&j <= high; k++) { if (B[i] <= B[j]) A[k] = B[i++];

2021-08-21 21:12:59 99

原创 散列表(哈希表)—散列查找代码书写(C语言)

王道数据结构上查找一章有散列表的相关介绍,却没有提供对应代码,但是做题时有些题用散列表会很方便,在此提供散列表相关代码。开放地址法几乎不会用到,它丧失了散列表最常用的地,即方用散列函数寻找关键字位置,所以下面提供的是拉链法相关代码数据结构typedef struct LNode//链表节点{ ElemType data; struct LNode *next;}LNode;typedef struct HashTable//散列表{ LNode *TheList[MaxSize];//指

2021-08-21 18:19:49 1098

原创 查找数组中两两之和等于X的整数对(C语言实现)

王道数据结构线性章节的思维拓展一个长度为N的整形数组A[1…N],给定整数X,设计一个时间复杂度不超过O(nlog2^n)的算法,查找数组中所有两两之和等于X的整数对(每个元素只输出一次)书上有可以用排序做,思考是否有其它解法我想到的是用散列表,用拉链法构建给定数组的散列表,然后 从头开始寻找匹配值,如A[1]=3,X=10,要找到7,就是用散列查找寻找7算法代码//用散列查找来寻找两数之和等于x的整数对void Pairing_01(ELemType a[], int N, ELemType

2021-08-21 12:29:57 1323 3

原创 顺序表涉及移动元素的算法杂谈(C语言实现)

第一种算法借助辅助数组void move_elem(int a[],int n, int p){ int *b = (int *)malloc(sizeof(int)*p);//定义辅助数组b[] for (int i = 0; i < n; i++) { if (i < p) b[i] = a[i]; else a[i - p] = a[i]; } for (int i = n-p,j=0; i < n; i++,j++) { a[i] = b[

2021-07-14 23:37:27 259 3

原创 C语言指针个人浅见(涉及链表)

首先明确两个观点C语言在定义变量时会分配数据类型对应大小的内存空间;C语言在定义指针型变量时默认分配四个字节大小的空间,与指针所指向的数据类型无关;再来回答几个问题:1.结构体是什么?答:结构体是用户自己定义的数据类型,和int,float,char等一样是一种数据类型。2.指针所在内存空间上放的是什么?答:是一串地址,指针所指向数据元素的首地址。3.既然不管指向什么数据类型的指针分配的都是四个字节的内存空间,那么定义指向不同数据类型的指针有什么用呢?答:定义指针时前面的数据类型表明存

2021-07-12 20:24:03 108

原创 删除无序顺序表中的重复元素(C语言实现)

王道数据结构上有道题,删除无序的顺序表中重复元素,提示是用散列表,自己试着实现了一下算法设计思想关键之处在于利用散列表的冲突来判断元素是否存在重复。于是解决散列表冲突的方式只能用拉链法,不能用开放地址法。散列表有数组和多个链表组成。数组里存储的是对应单个链表的首地址,链表中数据域用存储同义词。通过散列函数找到对应位置,继而判断是否存在相同元素。算法代码void DeleteSame(Seqlist *L){ int p = L->len; LNode *S; int H[M] = {

2021-07-12 19:16:00 7341 8

原创 C语言链表翻转算法(包含递归算法和非递归算法)

C语言链表翻转算法递归算法Linklist reverselist_rec(LNode *L, LNode *P)//带头结点递归算法{ LNode *N = P; if (P->next == NULL)//当访问到最后一个节点时返回 { L->next = P; return P; } P = reverselist_rec(L, P->next);//返回的节点P是当前节点N的后一个节点 P->next = N;//使返回的节点指向当前节点来实现逐级翻

2021-07-11 22:49:18 140

原创 C语言排列组合算法

写这个的起因是遇到一个题,从0 1 2 3 4 5 6 7从选出五个数字组成一个五位数,能有5整除的数有哪些,个人觉得问题的关键在于排列组合,从这7个数中选出5个数能有,多少种组合,每种组合又有多少种排列排列组合算法可以看做两部分,组合算法和排列算法组合算法C(m,n):从m个数中选出n个数,总共有多少种不同的组合设计思想如下:程序代码如下:#include<stdio.h>#define M 100void comb(int *tar, int *sou, int t, in

2021-07-02 22:45:37 2900

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除