![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构(c)
菜鸡初入数据结构c语言篇
王陈锋
没有什么可看的,没有什么意思
展开
-
计算顺序表中值在100到500之间的元素个数
要求顺序表中值在100到500之间的元素的个数,你可以使用C语言编写一个循环来遍历顺序表中的元素,并在循环中检查每个元素是否在指定的范围内。这个程序首先要求用户输入顺序表的元素个数和元素值,然后遍历顺序表中的元素,统计在100到500之间的元素个数,并最后输出结果。原创 2023-10-10 19:45:56 · 363 阅读 · 0 评论 -
(查找排序)为宿舍管理人员编写一个宿舍管理查询软件, 程序采用交互工作方式(两种)
为宿舍管理人员编写一个宿舍管理查询软件, 程序采用交互工作方式,其流程如下:开 始建立数据文件数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、快速等任选一种)查询菜单: (用二分查找实现以下操作)1.按姓名查询2.按学号查询3.按房号查询打印任一查询结果(可以连续操作)原创 2021-12-21 18:48:26 · 4673 阅读 · 3 评论 -
(图的遍历)以邻接矩阵和邻接表的方式存储连通图。然后分别用深度优先或广度优先算法遍历邻接矩方式存储的图和邻接表方式存储的图。
实验目的1.掌握图的基本存储方法;2.掌握有关图的操作算法并用高级语言编程实现。实验数据(图)运行结果代码实现#include<stdio.h>#include<malloc.h>typedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF表示无穷大//以下定义邻接矩阵类型typedef struct{ int no;//顶点编号 ...原创 2021-12-19 10:45:16 · 1089 阅读 · 0 评论 -
编制一个可以对图进行遍历和用迪杰斯特拉算法求指定顶点到其余各顶点的最短路径的程序。
实验目的1.掌握图的基本存储方法。2.掌握有关图的操作算法并用高级语言编程实现;3.熟练掌握图的两种搜索路径的遍历方法。算法描述1)记S为已经找到的从V0出发的最短路径的终点的集合,它的初始状态为空集。那么,从V出发到图上其余各顶点VI可能达到的最短路径的初始值为D[i]=arcs[LocateVex(G,V)][i].2)选择Vj使得:D[j]=Min{D[i]|vi不属于S}Vj就是当前求得的一条从V出发的最短路径的终点。将j加入到S中。3)...原创 2021-12-19 10:41:41 · 906 阅读 · 0 评论 -
图的迪杰斯特拉算法,求最短路径
迪杰斯特拉算法,求最短路径,算法思想解析原创 2021-12-05 15:03:04 · 3285 阅读 · 3 评论 -
实现图的邻接矩阵存储,将邻接矩阵转为邻接表。
前期提要本代码的邻接矩阵的顶点设为v0、v1、v2、v3、v4、v5,从v0开始。代码实现#include<stdio.h>#include<malloc.h>typedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF表示无穷大//以下定义邻接矩阵类型typedef struct{ int no;//顶点编号 InfoType info;//顶点其他信息原创 2021-12-02 15:26:05 · 1695 阅读 · 0 评论 -
在目录下搜索文件是否存在,并将其路径打印出来(文件)
在目录下搜索文件是否存在,并将其路径打印出来(文件)原创 2021-11-24 15:48:37 · 455 阅读 · 0 评论 -
遍历目录下的所有文件(文件)
前情提要文件内容结构本地文件夹代码实现#include <stdio.h>#include<io.h>#include<string.h>#define MaxSize 100//这里是目录底下最多的文件数量设置,文件数量设置要多余等于实际情况,不然不能全部出来int Function(char *,char *);//文件夹遍历函数void Connect(char*,char*,char*);//字符串连接函数v..原创 2021-11-22 20:13:30 · 1635 阅读 · 0 评论 -
建立一磁盘目录,搜索某文件是否存在(二叉树模拟)
构造思想,文件采用左兄弟,右孩子的想法进行构造。原创 2021-11-22 20:09:08 · 984 阅读 · 0 评论 -
哈夫曼树构造及哈夫曼编码
请为用于通信的电文中的字母进行赫夫曼编码。如各个字母在电文中出现的频率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11。试为这8个字母设计哈夫曼编码。原创 2021-11-21 16:05:36 · 11063 阅读 · 4 评论 -
二叉树算法
按先序次序输入二叉树中结点的值(一个字符),`0`表示空树,生成二叉树的二叉链表存储结构, a为指向根结点的指针。然后按中序顺序遍历二叉树。算法思想:先访问左子树,再访问根结点,最后访问右子树实验数据:abc00de0g00f000(0表示空格)原创 2021-11-20 20:07:44 · 1055 阅读 · 1 评论 -
实验中序线索化二叉树
程序采用cpp文件,实现中序线索化二叉树,采用递归和非递归两种方式输出线索中序序列。原创 2021-11-16 20:35:10 · 1433 阅读 · 0 评论 -
文本串加密和解密程序。一个文本串可用事先给定的字母映射表进行加密
前情提要设字母映射表为:a b c d e f g h i j k l m n o p q r s t u v w x y zn g z q t c o b m u h e l k p d a w x f y i v r s j测试数据:encrypt 加密后tkzwsdf将输入的文本串进行加密后输出,然后进行解密并输出。代码实现#include<stdio.h>#include<string.h>#define MaxSize 100..原创 2021-11-14 07:36:19 · 4806 阅读 · 1 评论 -
实现顺序串的各种模式匹配算法
函数操作采用简单匹配算法求子串t在主串s中的位置 采用KMP算法求子串t在主串s中的位置 采用改进的KMP算法求子串t在主串s中的位置代码实现#include<stdio.h>#include<string.h>#include<stdlib.h>#define MaxSize 100typedef int Status;typedef struct{ char data[MaxSize]; int length;}HStr.原创 2021-11-14 07:34:21 · 1631 阅读 · 0 评论 -
编写程序,实现顺序串(堆分配存储结构)的各种基本运算
函数操作Status StrAssign(HString &T, char * chars)//生成一个其值等于串常量chars的串Tint StrLength(HString S)//返回S的元素个数,称为串的长度int StrCompare(HString S, HString T)//若S>T,则返回值>0;若S=T,则返回值=0;若S<T则返回值<0Status ClearString(HString &S)//将S清空Status Co原创 2021-11-14 07:32:20 · 2458 阅读 · 0 评论 -
实验顺序串各种基本运算的算法
前情提要代码文件采用cpp文件代码#include<stdio.h>#include<string.h>#define MaxSize 100typedef struct{ char data[MaxSize]; int length;}SqString;void StrAssign(SqString &s,char cstr[]);//由串常量cstr创建串strvoid StrCopy(SqString &s,SqStr...原创 2021-11-01 19:44:48 · 1058 阅读 · 0 评论 -
(模拟看病)编写一个程序,反映病人到医院看病,排队看医生的情况。
前情提要代码使用cpp文件,使用链队。在病人排队过程中,主要重复两件事:(1)病人到达诊室,将病历交给护士,排到等待队列中候诊。(2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:排队——输入排队病人的病历号,加入到病人排队队列中。 就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。 查看排队——从队首到队尾列出所有的排队病人的病历号。 不再排队,余下顺序就诊——从队首到队尾列出所有原创 2021-10-19 19:49:02 · 6929 阅读 · 8 评论 -
(中缀表达式)编写进栈、出栈、表达式求值等相关函数,实现表达式求值功能。
前情提要纯c版本#include<stdio.h>#include<string.h>#include<stdlib.h>#define max 100typedef struct{ double data[max]; int top;}Stacknum;typedef struct{ char data[max]; int top;}Stackchar;void initnum(Stacknum *p){ p->top=原创 2021-10-17 16:53:07 · 499 阅读 · 0 评论 -
(第1种)括号匹配,判断一个表达式中的括号是否匹配。
前情提要纯c版本,#号代表终止操作#include<stdio.h>#include<stdlib.h>#include<math.h>#define maxsize 100typedef int status;//使后面可以使用status类型,用来表示成功或失败状态#define ERROR -1#define OK 1typedef struct{ char *base; char *top; int stacksize;}sqs.原创 2021-10-08 20:49:44 · 1061 阅读 · 0 评论 -
(进制转换)数制转换,把一个十进制的数转换为R进制
前情提要本代码可支持,10进制转换为任意进制的数#include<stdio.h>#include<stdlib.h>#include<math.h>#define maxsize 100typedef int status;//使后面可以使用status类型,用来表示成功或失败状态#define ERROR -1#define OK 1typedef struct{ int *base; int *top; int stacksize;原创 2021-10-08 20:42:14 · 3499 阅读 · 0 评论 -
(第4种)用单链表存储一元多项式,并实现两个多项式相加运算。
前期提要本次代码纯c语言,可以支持输入两个多项式的项式、系数、指数。#include<stdio.h>#include<stdlib.h>typedef struct arrays//定义存放多项式的数组类型{ double coef;//系数 int exp;//指数}narray;typedef struct pnode//定义单链表节点类型{ double coef; int exp; struct pnode *next;}Node,*.原创 2021-10-08 20:37:25 · 3246 阅读 · 0 评论 -
(第3种)用单链表存储一元多项式,并实现两个多项式相加运算
本次代码是纯c语言版本的#include<stdio.h>#include<stdlib.h>typedef struct//定义存放多项式的数组类型{ double coef;//系数 int exp;//指数}narray[10];typedef struct pnode//定义单链表节点类型{ double coef; int exp; struct pnode *next;}Node,*LinkList;int i;LinkList cre原创 2021-10-08 20:30:44 · 1906 阅读 · 1 评论 -
关于顺序栈的退栈和入栈操作
代码Void main(){Stack S;Char x,y;InitStack(S);x='c';y='k';push(S,x);push(S,'a');push(S,y); ---(1)pop(S,x);push(S,'t');push(S,x); ---(2)pop(S,x);push(S,'s'); ...原创 2021-10-08 08:10:17 · 3374 阅读 · 0 评论 -
实现顺序栈各种基本运算的算法(双指针版)(c)
代码支持实现初始化、栈空、栈满、取栈顶、进栈、出栈。代码#include<stdio.h>#include<stdlib.h>#include<math.h>#define maxsize 100typedef int status;//使后面可以使用status类型,用来表示成功或失败状态#define ERROR -1#define OK 1typedef struct{ char *base; char *top; int sta原创 2021-10-06 08:38:07 · 956 阅读 · 0 评论 -
实现顺序栈各种基本运算的算法(单指针版)(c++)
代码支持实现初始化、栈空、栈满、取栈顶、进栈、出栈。代码分为2部分,一个函数部分,一个主函数。函数部分#include<stdio.h>#include<malloc.h>#define maxsize 100typedef struct{ char data[maxsize]; int top;}sqstack;void init(sqstack *&s){ s=(sqstack *)malloc(sizeof(sqstack));原创 2021-10-05 19:01:37 · 1951 阅读 · 0 评论 -
顺序栈的表示与实现
顺序栈的基本函数初始化入栈出栈取栈顶元素代码#include<stdio.h>#include<stdlib.h>#include<math.h>#define maxsize 100typedef int status;//使后面可以使用status类型,用来表示成功或失败状态#define ERROR -1#define OK 1typedef struct{ char *base; char *top; int原创 2021-10-05 09:28:36 · 634 阅读 · 0 评论 -
单链表,删除小于x的所有元素
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void PrintList(LinkList L);LinkList init(int n){ int i=0; LinkList L.原创 2021-10-03 18:05:27 · 883 阅读 · 0 评论 -
已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,删除表中所有大于mink且小于mark的所有元素(若表中存在这样的元素),同时释放被删除结点空间。
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct node{ int data;//数据 int length;//长度 struct node *next;}Node,*LinkList;//删除超过范围的内容void deLinkList(LinkList L,int mink,int maxk){ LinkList p,q;p=L; while(p!.原创 2021-10-03 18:03:05 · 5096 阅读 · 2 评论 -
学生管理系统(数组?结构体?)
题目选择一种线性表实现方式(顺序表或单链表),实现如下线性表应用:要求:输入n个学生的信息(姓名,性别,学号,成绩),实现功能: 功能1:查找某个学号为×××的学生; 功能2:添加一名学生的信息(姓名,性别,学号,成绩); 功能3:删除一名学号为×××的学生。 功能4:计算所有学生的平均成绩 功能5:修改学号为×××的学生的成绩。代码#include<stdio.h>#include<stdlib.h...原创 2021-09-29 09:24:33 · 261 阅读 · 0 评论 -
学生管理系统(顺序表)
题目选择一种线性表实现方式(顺序表或单链表),实现如下线性表应用:要求:输入n个学生的信息(姓名,性别,学号,成绩),实现功能: 功能1:查找某个学号为×××的学生; 功能2:添加一名学生的信息(姓名,性别,学号,成绩); 功能3:删除一名学号为×××的学生。 功能4:计算所有学生的平均成绩 功能5:修改学号为×××的学生的成绩。代码#include<stdio.h>#include<stdlib...原创 2021-09-29 09:21:52 · 1508 阅读 · 2 评论 -
已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。
#include "stdio.h"#include "malloc.h"#include "stdlib.h"typedef int dataType;typedef struct { int data[100];//数据 int length;//长度}SeqList;SeqList *init();void fill(SeqList *L);void show(SeqList *L);void delSeqList(SeqList *L,int i);void destor.原创 2021-09-21 11:07:01 · 3169 阅读 · 0 评论 -
用单链表存储一元多项式,并实现两个多项式相加运算。(c与c++)
测试数据A17(x)=7+3x+9x8+5x17B8(x)=8x+22x7-9x8c语言版本#include<stdio.h>#include<stdlib.h>#define MAX 20typedef struct//定义存放多项式的数组类型{ double coef;//系数 int exp;//指数}polyarray[MAX];typedef struct pnode//定义单链表节点类型{ double coef; int ex原创 2021-09-28 20:00:19 · 5334 阅读 · 0 评论 -
(车)定义单链表,编写单链表初始化函数、插入函数(在某个位置插入一个元素)、查找函数(按值查找)、删除函数(删除单链表中某个位置上的元素)、输出函数(显示单链表中每个元素)、主函数。
可供操作printf("\n输入你要选择的命令\n"); printf("1、展示一切信息\n"); printf("2、插入\n"); printf("3、销毁表\n"); printf("4、初始化表\n"); printf("5、查找信息\n"); printf("6、删除信息\n"); printf("7、退出\n");代码使用了后插入法#define _CRT_SECURE_NO_WARNINGS#include "stdio.h"#include "s.原创 2021-09-18 09:33:25 · 1239 阅读 · 0 评论 -
定义顺序表,编写顺序表初始化函数、插入函数(在某个位置插入一个元素)、查找函数(按值查找)、删除函数(删除顺序表中某个位置上的元素)、输出函数(显示顺序表中每个元素)、主函数。
有关插入函数、查找函数、删除函数参数如下:插入函数insertSeqList(SeqList *L,int i, dataType x);//在L中第i个位置插入x查找函数searchSeqList(SeqList *L,dataType x);//查找x是否在L中,若有返回x在L中的位序,若没有返回0;删除函数delSeqList(SeqList *L,int i);//删除L中第i个元素,并返回其值。本函数支持 printf("\n输入你要选择的命令\n"); printf.原创 2021-09-15 11:31:51 · 5010 阅读 · 2 评论 -
(结构体+指针)(外加自定义车辆数量和选择目标车辆修改)定义“车”结构体,实现改变车颜色,车牌操作。
此时的车,可以支持自定义车辆数量,然后输入完所有车辆信息后,可以随时查看车辆信息,随时更改想要更改的车辆信息,随时选择退出。#include<stdio.h>#include <stdlib.h>int n;typedef struct car{ char color[100]; int number;}car;int xiugai(car car3[],int b){ int i; printf("请输入修改车辆属性信息\n")...原创 2021-09-10 22:07:54 · 567 阅读 · 0 评论 -
(结构体+指针)定义“车”结构体,实现改变车颜色,车牌操作
简易的代码,只有2个功能,修改车颜色和车牌,保存退出。#include<stdio.h>#include <stdlib.h>int n;typedef struct car{ char color[8]; int number;}car;car car1;int main(){ car *p=&car1; printf("输入车的颜色:"); gets(car1.color); printf("输入车的车牌号:"); scanf("%d.原创 2021-09-06 22:11:25 · 1172 阅读 · 2 评论 -
(初步)定义“车”结构体,实现改变车颜色,车牌操作
#include<stdio.h>#include <stdlib.h>int n;typedef struct car{ char color[8]; int number;}car;car car1;int main(){ printf("输入车的颜色:"); gets(car1.color); printf("输入车的车牌号:"); scanf("%d",&car1.number); printf("\n你输入的车颜色为%s,车牌号为%d.原创 2021-09-05 22:08:45 · 447 阅读 · 0 评论 -
编写一个链表结构关于车的属性,读取任意多辆车的车型、车牌号、外形颜色、价钱输入。之后遍历链表,再将链表数据打印出来。
#include<stdio.h>#include<stdlib.h>typedef struct vehicle{ int number; char color[8]; char xinghao[80]; int price; struct vehicle *next;}car;int n;car *create(){ car *head,*p1,*p2; n=0; p1=p2=(car*)malloc(sizeof(car)); printf(".原创 2021-09-05 15:15:17 · 248 阅读 · 0 评论 -
编写一个程序,计算任一输入的正整数的各位数字之和,并分析算法的时间复杂度
sum的时间复杂度为O(len(n)),len(n)为正整数n的位数,程序的时间复杂度也为O(len(n));#include<stdio.h>int main(){ int n,i,j; printf("输入一个正整数n:\n"); scanf("%d",&n); printf("%d",sum(n));}int sum(int n){ int i,a,sum1=0; a=n; while(a) { sum1+=a%10; a/=10; }.原创 2021-09-04 15:02:50 · 3972 阅读 · 0 评论 -
(2种)编写一个程序,对于给定的正整数n,求1+2+…+n,采用逐个累加和n(n+1)/2两个解法。对于相同的n,给出这两种解法的求和结果和求解时间
#include "stdio.h"#include "time.h"#include "math.h"#define MAXK 1e7clock_t start,stop;double duration;double f1(int n){ int i,sum=0; for(i=1;i<=n;i++) sum+=i; return sum;}double f2(int n){ int sum=0; sum=(n*(n+1))/2; return sum;}i.原创 2021-08-31 21:32:47 · 6463 阅读 · 0 评论