
正文
数据结构(c语言版)例题代码,数据结构c语言代码怎么写
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
数据结构c 语言版题目,求代码!!! 请一定是用C语言
#include#definearrsize1024voidmain(){inta[arrsize],elenum=0;intinput(inta[]);voidprint(inta[],intn);intins(inta[],intx,intn);elenum=input(a);print(a,elenum);inty;ciny;elenum=ins(a,y,elenum);print(a,elenum);}intinput(inta[]){intx,k=0;cinx;while(x!=0){a[k]=x;k++;cinx;}returnk;}intins(inta[],intx,intn){inti,j;while(xi;j--)a[j+1]=a[j];a[i]=x;returnn;}voidprint(inta[],intn){for(inti=0;i
相关问答
Q1: 求c语言数据结构上机题代码(用数组来做)
#include stdio.h
#include"string.h"
#include stdlib.h
#define N 100000
#define M 10000
int fun(char a[])
{
int sum=0;
for(int i=0;istrlen(a);i++)
sum+=a[i];//字符数字化→ACSII码之和是单词标志之一;
return sum;
}
int main() {
/*_________________________________________________*/
FILE *fp;
char b[N + 1];
//判断文件是否打开
if ( (fp = fopen("D:\\英语论文.txt", "rt")) == NULL )/*这里D:\\ 英语论文.txt 是路径;读取D盘下,名为(英语论文)的文本文件*/
{
puts("文件读取失败!\n");
exit(0);
}
else
{
puts("文件读取成功");
puts("开始计算");
}
//循环读取文件的每一行数据
while( fgets(b, N, fp) != NULL )
{
/*__________________________________________*/
int d[M]={0},x=0;
char a[111][11]={'\0'};
char t[11]={'\0'};
int k=0,j=0;
for(int i=0;istrlen(b);i++)
{
if((b[i]='a'b[i]='z')||(b[i]='A'b[i]='Z'))//不是空格就储存在二维数组中,一行一个单词;
a[k][j++]=b[i];
if(b[i]==' ')//遇到下一个空格就换行,进而开始下一个单词的储存;
{
k++;
j=0;
}
}
int max=fun(a[0]);
for(int i=0;i=k;i++)
{
d[fun(a[i])]++;//用每个单词的ASCII码之和桶排序,这也即是字典序;
if(fun(a[i])max)
max=fun(a[i]);//找出最大的作为上限;
}
int name;
for(int i=0;i=max;i++)
{
name=0;
for(int j=0;j=k;j++)
{
if(fun(a[j])==i)/*a[j]的ASCII码之和等于i,说明d[i]是记录单词a[j]的,d[i]的数就是a[j]出现的频率;*/
{
name=j;//记录单词下标;
}
}
if(d[i]!=0)//d[i]!=0即i是某个单词的ASCII码之和;
{
printf("%s %d\n",a[name],d[i]);//输出
}
}
/*___________________________________________*/
}
//结束关闭文件
fclose(fp);
return 0;
}
这是修改过的,不过没太大变化,只是加了一个文件读取代码;
Q2: 数据结构c 语言版题目,求代码!!! 请一定用C语言,求大神帮忙
如图
源代码:
/*
小L居住的地方有很多城市...
作者:q839219286
算法思想:城市图采用DFS搜索,搜索终止条件是:到达终点或 Vmax-Vmin>dV
设 dV=Vmax-Vmin,求dV的方法是利用 Vmax、Vmin的递归历史记录
图结构采用“邻接表”法,存储结构采用数组。
*/
//C语言版
#includestdio.h
#includestdlib.h
#include limits.h
//宏定义函数
#define MAX(a,b) (a)(b)?(a):(b)
#define MIN(a,b) (a)(b)?(a):(b)
//图节点结构(邻接表法)
struct VNode {
struct Edge *next;
char visited; //是否在本路径中访问过,=1是;=0否
};
//图的边结构(邻接表法)
struct Edge {
int v; //道路的行驶速度
struct VNode *adjVex; //道路通向的城市节点
struct Edge *next;
};
#define max_Vex 500
#define max_Edge 5000
//最多500个城市(其中下标为0不使用)
struct VNode vex[max_Vex + 1];
struct Edge edge[max_Edge * 2]; //一条边有两个节点需要记录
int vex_Num, edge_Num;
struct VNode *start, *end; //起点、终点
int minDIF; //已经找到的通往终点路径中Vmax-Min的最小差值
void addEdge(int Ui, int Vi, int Wi);//新增 Ui 通往 Vi的道路
void buildGraph();
void DFS(struct VNode *vex, int Vmax, int Vmin);
int main() {
int Q; scanf("%d", Q); //一个整数Q,代表有多少组测试数据。
int out[5],i; //2≤Q≤5
for (i=0; iQ ; i++) {
buildGraph(); //scanf已包含在内
DFS(start, -1, INT_MAX-1);
out[i] = minDIF;
}
//输出最终结果
for (i = 0; iQ; i++) {
printf("%d\n",out[i] );
}
//getchar(); getchar(); //防止闪退
return 0;
}
void DFS(struct VNode *vex,int Vmax,int Vmin) {
if (Vmax - Vmin = minDIF)return; //一旦超限,则没有继续遍历的意义
if (vex == end) { //到达终点
minDIF = Vmax - Vmin; //已经保证 Vmax - Vmin minDIF
}else { //继续遍历
vex-visited = 1; //防止DFS无限循环
struct Edge *next;
for (next = vex-next;
next != NULL; next = next-next) {
if(0== next-adjVex-visited) //下一节点不在已走过的节点
DFS(next-adjVex, MAX(next-v, Vmax), MIN(next-v, Vmin));
}
vex-visited = 0; //时光倒流
}
}
//新增 Ui 通往 Vi的道路
void addEdge(int Ui, int Vi, int Wi) {
edge[edge_Num].adjVex = vex + Vi;
edge[edge_Num].v = Wi;
edge[edge_Num].next = vex[Ui].next; //链表头插法
vex[Ui].next = edge+ edge_Num;
edge_Num++;
}
void buildGraph() {
int road_Num, i, startID, endID;
struct VNode *p_V;
scanf("%d %d", vex_Num, road_Num);
//初始化节点。倒序遍历,注意vex[0]不算入。 其实可以用memset()秒杀的,我写的是原生代码版本
for (p_V = vex + vex_Num; p_V vex; p_V--) {
p_V-next = NULL;
p_V-visited = 0;
}
//注意 road_Num条道路 有 2*edge_Num 个邻接表边
edge_Num = 0;
for (; road_Num 0; road_Num--) { //road_Num条道路 读入road_Num行数据
int Ui, Vi, Wi;//3个整数Ui,Vi,Wi, (i=1,…..,M),道路的两个城市编号和道路的行驶速度。
scanf("%d %d %d", Ui, Vi, Wi);
//注意两个方向都要添加
addEdge(Ui, Vi, Wi);
addEdge(Vi, Ui, Wi);
}
//余下数据赋值
scanf("%d %d", startID, endID);
start = vex + startID;
end = vex + endID;
minDIF = INT_MAX;
}
Q3: 求数据结构C语言版的编程代码?
// class.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
struct Node
{
int data;
struct Node *next;
}*head;//建一个head的指针构造函数
void StoreData(int k)
{
int i;
struct Node *p,*p1;
p=(struct Node *)//取地址//malloc(sizeof(struct Node*));//在这的*号可要可不要
scanf("%d",p-data);
p-next=NULL;
head=p;p1=p;
for(i=1;ik;i++)
{
p=(struct Node *)//取地址//malloc(sizeof(struct Node*));//在这的*号可要可不要
scanf("%d",p-data);
p1-next=p;
p1=p;
}
}
void PrintData(int k)
{
struct Node *p=head;
int i;
for(i=1;i=k;i++)
{
printf("%d ",p-data);
if(p-next!=NULL)
p=p-next;
}
return;
}
int main(int argc, char* argv[])
{
StoreData(5);
PrintData(5);
return 0;
}
这是链表的输入输出,你试下不行再改
关于数据结构(c语言版)例题代码和数据结构c语言代码怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








