数据结构完整代码(完整的数据结构代码)
admin 发布:2022-12-19 10:14 163
本篇文章给大家谈谈数据结构完整代码,以及完整的数据结构代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
数据结构 图的基本操作要C语言的完整代码!!
#includestdio.h
#define n 6
#define e 8
void CREATGRAPH();
typedef char vextype;
typedef float adjtype;
typedef struct{
vextype vexs[n];
adjtype arcs[n][n];
}graph;
int main()
{
CREATGRAPH();
printf("创建成功!\n");
}
void CREATGRAPH()
{
graph *ga;
int i,j,k;
float w;
for(i=0;in;i++)
ga-vexs[i]=getchar();
for(i=0;in;i++)
for(j=0;jn;j++)
ga-arcs[i][j]=0;
for(k=0;ke;k++)
{
scanf("%d%d%f",i,j,w);
ga-arcs[i][j]=w;
ga-arcs[j][i]=w;
}
printf("创建成功!\n");
}
没写完,,自己加加吧!
数据结构代码
#include iostream
#include algorithm
#define MAX_SIZE 10000
using namespace std;
void first_way(int *arr, int n)
{
int map[MAX_SIZE] = { 0 };//这里元素最大不超过9999,可以按需求放大一些
for (size_t i = 0; i n; i++)
{
map[arr[i]]++;
}
int main_elem = 0;
for (size_t i = 0; i MAX_SIZE; i++)
{
if (map[main_elem] map[i]) main_elem = i;
}
if (map[main_elem] n / 2) cout main_elem endl;
else cout -1 endl;
}
void sec_way(int *arr, int n)
{
sort(arr, arr + n);
int count = 1, max_count = 1;
int main_elem = arr[0];
for (size_t i = 1; i n; i++)
{
if (arr[i] != arr[i - 1])
{
if (count max_count)
{
max_count = count;
main_elem = arr[i - 1];
}
count = 0;
}
count++;
}
if (count n / 2) cout arr[n - 1] endl;
if (max_count n / 2) cout main_elem endl;
else cout -1 endl;
}
int main()
{
int arr1[8] = { 0, 5, 5, 3, 5, 7, 5, 5 };
int arr2[8] = { 0, 5, 5, 3, 5, 1, 5, 7 };
cout "第一个数组测试:" endl;
first_way(arr1, 8);
sec_way(arr1, 8);
cout "第二个数组测试:" endl;
first_way(arr2, 8);
sec_way(arr2, 8);
return 0;
}
高手给个数据结构(魔王语言解释)的算法全代码吧 急用~~谢谢了 ~~
#includestdio.h
#includestdlib.h
#includestring.h
#include"malloc.h"
#define LEN 20
#define L_size 100
typedef struct Nodeone
{ char a[2];
struct Nodeone *next;
}Nodeone,*TNodeone;
struct
{
char rA[20];
char ra[20];
}rule[20];
struct
{
char mA[20];
char ma[20];
}mean[20];
/////////////////////////////////////////////
//栈的操作//////
typedef struct node
{
char data;
struct node * next;
}LinkStackNode,* LinkStack;
void InitStack(LinkStack * top)
{
(* top)=(LinkStack)malloc(sizeof(LinkStackNode));
(* top)-next=NULL;
}
//用头插法建栈
void Push(LinkStack top,char a)
{
LinkStackNode * temp;
temp=(LinkStackNode *)malloc(sizeof(LinkStackNode));
temp-data=a;
temp-next=top-next;
top-next=temp;
}
//删除栈顶元素
void Pop(LinkStack top,char *x)
{
LinkStackNode * temp;
temp=top-next;
top-next=temp-next;
*x=temp-data;
free(temp);
}
//////////////////////////////////////////////////////////////
////队列的操作////
typedef struct Node
{
char data;
struct Node * next;
}LinkQueueNode;
typedef struct
{
LinkQueueNode * front;
LinkQueueNode * rear;
}LinkQueue;
//链队列初始化
void InitQueue(LinkQueue *Q)
{
Q-front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(Q-front!=NULL)
{
Q-rear=Q-front;
Q-front-next=NULL;
}
}
//链队列入队操作
void EnterQueue(LinkQueue *Q,char x)
{
LinkQueueNode * NewNode;
NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(NewNode!=NULL)
{
NewNode-data=x;
NewNode-next=NULL;
Q-rear-next=NewNode;
Q-rear=NewNode;
}
}
//链队列出队操作
void DeleteQueue(LinkQueue *Q,char *x)
{
LinkQueueNode * p;
p=Q-front-next;
Q-front-next=p-next;
if(Q-rear==p)
Q-rear=Q-front;
*x=p-data;
free(p);
}
//读取文件
void read_rulefile()
{
FILE * fp;
char filename[LEN];
int i=0;
printf("请输入要打开规则文件的完整路径及其文件名:\n"); //1. 读取文本文件(rule.txt), 将具体规则的对应 关系读入数组或链表中
gets(filename);
fp=fopen(filename,"rt");
if(fp==NULL)
{
printf("\n打开文件失败,%s文件可能不存在\n",filename);
return ;
}
while(fscanf(fp,"%s %s",rule[i].rA,rule[i].ra)!=EOF)
{
printf("%s %s\n",rule[i].rA,rule[i].ra);
i++;
}
return ;
}
void read_meanfile()
{
FILE * fp;
char filename[LEN];
int i=0;
printf("请输入要打开mean文件的完整路径及其文件名:\n"); //2. 读取文本文件(mean.txt), 将小写字母及其 对应的含义读入数组或链表中
gets(filename);
fp=fopen(filename,"rt");
if(fp==NULL)
{
printf("\n打开文件失败,%s文件可能不存在\n",filename);
return ;
}
while(fscanf(fp,"%s %s",mean[i].mA,mean[i].ma)!=EOF)
{
printf("%s %s\n",mean[i].mA,mean[i].ma);
i++;
}
return ;
}
///////////////////////////////////////////////////////////////////////
//思想:当没遇到闭括号时,一直压栈(top栈)。一旦遇到闭括号,首先找到与这个闭括号最近的匹配的开括号
//找到这两个括号“(” “)”之间的第一个 字符
//利用队列(Q 入队)以及(top栈 出栈)完成转换,再把转换后的队列,添加到(top栈中)把剩余的字符 原样添加到top栈中
//在把top栈 逆置到 top1栈中
//再利用top1栈出栈,给L重新赋值。
//递归,看L中是否还有括号
void tackle_2(LinkStackNode * top,LinkStackNode * top1,LinkQueue * Q,char L[])
{
int i=0,j;
char * a;
char first;
a=(char *)malloc(sizeof(char));
InitStack(top);
InitQueue(Q);//辅助用来输出括号内的内容
InitStack(top1);
while(L[i]!=')'L[i]!='\0')
{
Push(top,L[i]);//当不等于‘)’时,往top栈中压。
i++;
}
if(L[i]==')') //当等于')'时
{
j=i;
while(L[j]!='(')
{ j--;
if(L[j]=='(')
{
j++;break;
}
}
first=L[j];//找到当前‘( ’内的第一个字符
for(;ji-1;j++)
{
EnterQueue(Q,first);
Pop(top,a);
EnterQueue(Q,*a);
}
Pop(top,a); //这个是括号内的第一个字符
EnterQueue(Q,*a);
Pop(top,a);//把‘(’删掉
while(Q-front-next!=NULL)
{
DeleteQueue(Q,a);
Push(top,*a);
}
}// if
i++;//跳过‘)’
while(L[i]!=NULL)
{ Push(top,L[i]);
i++;
}
while(top-next!=NULL)
{
Pop(top,a);
Push(top1,*a);
}
i=0;
while(top1-next!=NULL)
{
Pop(top1,a);
L[i]=*a;
i++;
}
L[i]=NULL;
i=0;j=0;
while(L[i]!=NULL)
{
i++;
if(L[i]=='(' || L[i]==')')
j++;
}
if(j==0) return;
else tackle_2(top,top1,Q,L);
}
//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//实现提示: 处理规则形式(1) 问题并没有规定具体规则的数量,
//比如增加 一条具体规则 C→eB 那么对魔王语言就要多处理一次,
//因此处理 规则形式(1)时需要递归处理,当语言中没有 大写字母后递归结束。
void tackle_1(char L[],LinkQueue * Q)
{
int i=0,j,z;
int k=0;
char * a;
a=(char *)malloc(sizeof(char));
while(L[i]!=NULL)
{ z=0;
for(j=0;j20;j++)
{
if(L[i]==rule[j].rA[0])
{ k=0;
z=1;
while(rule[j].ra[k]!=NULL)
{
EnterQueue(Q,rule[j].ra[k]);
k++;
}
}
}
if(z==1)
i++;
else
{
EnterQueue(Q,L[i]);
i++;
}
}
i=0;
while(Q-front-next!=NULL)
{
DeleteQueue(Q,a);
L[i]=(*a);
i++;
}
L[i]=NULL;
i=0; j=0;
while(L[i]!=NULL)
{
if(L[i]='A' L[i]='Z')
j++;
i++;
}
if(j==0)return;
else tackle_1(L,Q);
}
TNodeone tackle_12(char L[])
{ TNodeone head,r,s;
int i=0;
int j;
head=(Nodeone*)malloc(sizeof(Nodeone));
head-next=NULL;
r=head;
while(L[i]!=NULL)
{
for(j=0;j20;j++)
{
if(L[i]==mean[j].mA[0])
printf("%s",mean[j].ma);
s=(Nodeone*)malloc(sizeof(Nodeone));
strcpy(s-a,mean[j].ma);
r-next=s;
r=s;
}
i++;
}
r-next=NULL;
return head;
}
void savefile(TNodeone head)
{ FILE *fp;
TNodeone h;
h=head-next;
fp=fopen("c:/result.txt","wb");
if(fp==NULL)
{ printf("读文件失败,按任意键退出!");
getchar();
exit(1);
}
for(;h;h=h-next)
fprintf(fp,"%s",h-a);
fclose(fp);
printf("\n");
printf("保存文件成功!");
}
void main()
{ TNodeone head;
read_rulefile();
read_meanfile();
char L[L_size]; //魔王说的话
printf("请输入魔王语言:\n");
scanf("%s",L);
LinkStackNode * top, * top1;
top=(LinkStackNode * )malloc(sizeof(LinkStackNode));
top1=(LinkStackNode * )malloc(sizeof(LinkStackNode));
LinkQueue *Q;
Q=(LinkQueue *)malloc(sizeof(LinkQueue));
tackle_2(top,top1,Q,L);
printf("魔王要说的话是:%s\n",L);
tackle_1(L,Q);
printf("魔王要说的话是(转换成小写后):%s\n",L);
head=tackle_12(L);
savefile(head);
}
数据结构完整代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于完整的数据结构代码、数据结构完整代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
- 上一篇:相册环形滚动代码特效(图片滚动效果代码)
- 下一篇:网页查找代码(查找代码的网站)
相关推荐
- 05-15seo完整教程视频教程,seo教学视频教程
- 05-09网页代码,网页代码快捷键
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06代码源软件库(程序代码库)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接