当前位置:首页 > 代码 > 正文

数据结构完整代码(完整的数据结构代码)

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");

}

没写完,,自己加加吧!

数据结构代码

fisrt

second

#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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/6515.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载