C语言数据结构
南风~古草
贵州大学软件工程专业大三,学子彦秉成。立志于笃行求是,践行人生信仰的奋斗者!
展开
-
扔n个骰子,向上面的数字之和为S,给定n,请列出所有可能的S值及相应的概率。
题目: 扔n个骰子,向上面的数字之和为S,给定n,请列出所有可能的S值及相应的概率。C语言代码:原创 2022-10-30 08:00:00 · 157 阅读 · 0 评论 -
变种水仙花数求解(C语言,数学方法找下标规律)
一、变种水仙花题目:把任意的数字,从中间拆分成两个数字,比如1461,可拆分成(1和461)、(14和61)、(146和1),如果所有拆分后的乘积之和等于自身,则是一个变异水仙花数。二、代码和注释:三、运行结果验证:验证655、1461、14610、16420、23610、34420、65500(这些已知是变种水仙花数):随便输入一个不是变种水仙花的数,进行验证(如22222):原创 2022-10-24 08:00:00 · 243 阅读 · 0 评论 -
随机生成100个随机整数并放入一个链表中,要求链表中的元素按从小到大顺序排列,然后输出该链表。(C语言)
随机生成100个随机整数并放入一个链表中,要求链表中的元素按从小到大顺序排列,然后输出该链表。(C语言)原创 2021-10-11 21:08:39 · 1815 阅读 · 2 评论 -
根据已知节点求父节点(C语言,二叉树)
#include<stdio.h>#include<stdlib.h>struct TreeNode{ int data; struct TreeNode *left; struct TreeNode *right;};struct TreeNode *createNode(int num){ struct TreeNode *T; T=(struct TreeNode *)malloc(sizeof(struct TreeNode).原创 2022-01-13 12:45:00 · 1633 阅读 · 0 评论 -
对带头节的链表,返回倒数第K个节点指针。若表长小于K,返回NULL。要求只能遍历一次链表。(C语言)
#include<stdio.h>#include<stdlib.h>struct Node{ int data; struct Node *next;}; void tailInsert(struct Node *head,int num){ struct Node *p,*q; p=head; while(p->next!=NULL){ p=p->next; } q=(struct Node *)malloc(sizeof(struct N.原创 2021-12-26 08:15:00 · 208 阅读 · 0 评论 -
关键路径的计算(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>struct stack{ int *data; int top; int maxSize;};struct node{ int index; struct node *next;};struct table{ struct node **body; int tablesize;};char ch[9]={'a','b'.原创 2021-12-07 17:23:06 · 1238 阅读 · 0 评论 -
求每一对顶点之间的最短路径-Floyd算法及代码实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>int map[3][3]={ 0,4,11, 6,0,2, 3,100000,0/*这里用100000代替无穷大*/};int path[3][3]={/*path里的数据定义为路径的前置跳转点*/ -1,0,0, 1,-1,1, 2,2,-1};int main(){ int n=3; for(int i=0;i<n;i++){/.原创 2021-12-07 09:45:00 · 843 阅读 · 0 评论 -
单源最短路径-Dijkstra算法及代码实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>int map[7][7]={0,2,4,1,pow(2,30)-1,pow(2,30)-1,pow(2,30)-1,2,0,pow(2,30)-1,3,10,pow(2,30)-1,pow(2,30)-1,4,pow(2,30)-1,0,2,pow(2,30)-1,5,pow(2,30)-1,1,3,2,0,2,8,4,pow(2,30)-1,10...原创 2021-12-07 09:15:00 · 1700 阅读 · 0 评论 -
最小生成树-Kruskal算法及代码实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>int Find(int s[],int num){ for(;s[num]>=0;num=s[num]); return num;}void Union(int s[],int root1,int root2){ s[root2]=root1;}int main(){ int n=5; int map[5][...原创 2021-12-07 08:45:00 · 4349 阅读 · 0 评论 -
最小生成树-Prim算法案例及代码实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int n=5; int map[5][5]={ 0,17,2,9,pow(2,31)-1, 17,0,pow(2,31)-1,5,20, 2,pow(2,31)-1,0,13,12, 9,5,13,0,8, pow(2,31)-1,20,12,8,0}; int known[n];...原创 2021-12-05 08:15:00 · 1504 阅读 · 0 评论 -
拓扑排序代码实现(C语言,利用栈和邻接表)
#include<stdio.h>#include<stdlib.h>struct stack{ int *data; int top; int maxSize;};struct node{ int index; struct node *next;};struct table{ struct node **body; int tablesize;};int map[6][6]={ 0,1,1,1,0,0, 0,0,0,0,0...原创 2021-12-03 13:36:37 · 1009 阅读 · 0 评论 -
哈希表的实现(分离链表法,带头节点,C语言)
#include<stdio.h>#include<stdlib.h>#include<stdlib.h>struct Node{ int data; struct Node *next;};struct HashTable{ struct Node **body; int tableSize;};int nextPrime(int num){ num++; int i; while(1){ .原创 2021-11-24 21:37:27 · 188 阅读 · 0 评论 -
哈希表的基本操作(平方探测法,C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>struct HashTable{ int tableSize; struct HashBody *body;};struct HashBody{ int data; int state;};int nextPrime(int num){ num++; int i; while(1){ .原创 2021-11-24 17:31:19 · 1418 阅读 · 0 评论 -
正负链表分离的另一种核心代码写法(C语言,带头节点)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};void insert_tail(struct Node *L,int num){/*尾插法*/ struct Node *p,*q; p=L; while(p->Next!=NULL){ p=p->Next; } q=(struct N.原创 2021-11-01 08:58:18 · 126 阅读 · 0 评论 -
中缀表达式转后缀表达式(个位数四则运算,C语言)
#include<stdio.h>#include<stdlib.h>struct stack{ char *data; int top; int maxSize;};struct stack *createStack(int maxsize){ struct stack *s; s=(struct stack *)malloc(sizeof(struct stack)); s->data=(char *)malloc(.原创 2021-10-31 19:11:05 · 209 阅读 · 0 评论 -
C语言利用后缀表达式和栈结构完成简单的个位数四则运算
#include<stdio.h>#include<stdlib.h>struct stack{ int *data; int top; int maxsize;};struct stack *create(int maxSize){ struct stack *s; s=malloc(sizeof(struct stack)); s->data=malloc(sizeof(int)*maxSize); s-.原创 2021-10-02 11:07:35 · 205 阅读 · 0 评论 -
C语言之队列(不记录size,用(rear+1)%maxsize==front判断队满,会浪费一个空间,实际容量为maxsize-1)
#include<stdio.h>#include<stdlib.h>struct queue{ int *data; int front,rear; int maxsize;};struct queue *create(int maxSize){ struct queue *q; q=malloc(sizeof(struct queue)); q->data=malloc(sizeof(int)*maxSize); .原创 2021-10-01 23:51:30 · 1171 阅读 · 0 评论 -
随机生成20个整数存入一个顺序表,整数范围在(1,200)之间,然后在第一个素数后插入1个0,第二个素数后插入2个0,以此类推,最后输出表中所有元素。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>struct SqList{ int *Data; int N; int MaxSize;};struct SqList *create(int maxsize){ struct SqList *sq; sq=(struct SqList *)malloc(sizeof(struct SqList));.原创 2021-10-01 22:46:16 · 923 阅读 · 0 评论 -
随机生成100个整数存入一个顺序表,整数范围在[100,200)之间,输出表中所有元素;然后去掉其中所有的偶数,输出表中所有元素。(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>struct SqList{ int *Data; int N; int MaxSize;};struct SqList *create(int maxsize){ struct SqList *sq; sq=(struct SqList *)malloc(sizeof(struct SqList)); sq->Data=(int *)mal.原创 2021-10-01 22:41:53 · 761 阅读 · 0 评论 -
C语言之队列基本操作(用size记录队列当前长度)
#include<stdio.h>#include<stdlib.h>struct queue{ int *data; int front,rear; int size; int maxsize;};struct queue *create(int maxSize){ struct queue *q; q->data=malloc(sizeof(int)*maxSize); q->front=q->r.原创 2021-10-01 22:22:20 · 479 阅读 · 0 评论 -
C语言之链栈基本操作
#include<stdio.h>#include<stdlib.h>struct sNode{ int data; struct sNode *next;};struct sNode *create(){ struct sNode *s; s=malloc(sizeof(struct sNode)); s->next=NULL; return s;}int isEmpty(struct sNode *s){ .原创 2021-09-30 22:04:43 · 280 阅读 · 0 评论 -
C语言之栈的基本操作
#include<stdio.h>#include<stdlib.h>struct stack{ int *data; int top; int maxSize;};struct stack *createStack(int maxsize){ struct stack *s; s=malloc(sizeof(struct stack)); s->data=malloc(sizeof(int)*maxsize); .原创 2021-09-30 21:50:17 · 441 阅读 · 0 评论 -
C语言用二分查找法实现查找数组中大于目标值的最小元素的下标索引(如应用于查找及格学生(大于60分)中的最低分数)
#include<stdio.h>#include<stdlib.h>void _print(int arr[],int n){ for(int i=0;i<n;i++){ printf("%d\t",arr[i]); if((i+1)%10==0){ printf("\n"); } }}void swap(int arr[],int i,int j){ int temp=.原创 2021-09-25 18:17:06 · 509 阅读 · 0 评论 -
C语言实现二分查找法的非递归方法
#include<stdio.h>#include<stdlib.h>void _print(int arr[],int n){ for(int i=0;i<n;i++){ printf("%d\t",arr[i]); if((i+1)%10==0){ printf("\n"); } }}void swap(int arr[],int i,int j){ int temp=.原创 2021-09-25 17:16:54 · 524 阅读 · 0 评论 -
C语言实现递归形式的二分查找法
#include<stdio.h>#include<stdlib.h>void _print(int arr[],int n){ for(int i=0;i<n;i++){ printf("%d\t",arr[i]); if((i+1)%10==0){ printf("\n"); } }}void swap(int arr[],int i,int j){ int temp=.原创 2021-09-25 16:45:31 · 754 阅读 · 0 评论 -
C语言实现顺序链表合并(此方法开辟新的节点空间来存储数据,原链表不被破坏,带头节点,两个原链表本身分别无重复元素)
#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node *create(){ struct node *head; head=malloc(sizeof(struct node)); head->next=NULL; return head;}void Sq_insert(struct node.原创 2021-09-23 17:47:33 · 371 阅读 · 0 评论 -
C语言实现顺序链表的合并(此方法不开辟新的空间,在原链表上操作,带头节点,两个原链表本身分别无重复元素)
#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node *create(){ struct node *head; head=malloc(sizeof(struct node)); head->next=NULL; return head;}void Sq_insert(struct node.原创 2021-09-23 17:11:01 · 526 阅读 · 0 评论 -
C语言实现去除链表中的重复元素(带头节点)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};void insert_tail(struct Node *L,int num){/*尾插法*/ struct Node *p,*q; p=L; while(p->Next!=NULL){ p=p->Next; } q=malloc(siz...原创 2021-09-19 19:42:11 · 3284 阅读 · 0 评论 -
C语言实现正负数链表分离(带头节点)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};void insert_tail(struct Node *L,int num){/*尾插法*/ struct Node *p,*q; p=L; while(p->Next!=NULL){ p=p->Next; } q=malloc(si.原创 2021-09-19 14:09:38 · 381 阅读 · 0 评论 -
C语言递归实现链表反转(带头节点)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};void Sq_insert(struct Node *L,int num){/*链表顺序插入*/ struct Node *p=L,*q; while(p->Next!=NULL&&p->Next->Data<num) p=p-&g.原创 2021-09-19 13:04:22 · 585 阅读 · 0 评论 -
C语言实现链表顺序插入和反转(带头节点)
#include<stdio.h>#include<stdlib.h>struct Node{ int Data; struct Node *Next;};void Sq_insert(struct Node *L,int num){/*链表顺序插入*/ struct Node *p=L,*q; while(p->Next!=NULL&&p->Next->Data<num) p=p-&g.原创 2021-09-19 12:03:44 · 295 阅读 · 0 评论