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

数据结构代码(数据结构代码题怎么写)[20240429更新]

admin 发布:2024-04-29 03:15 123


今天给各位分享数据结构代码的知识,其中也会对数据结构代码题怎么写进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

c语言数据结构这几行代码什么意思,可以分别解释一下么新手小白求教?

typedef struct { int i,j,int di; }Box; //定义一个自定义类型: 结构Box

typedef struct { Box data[MaxSize]; int top; }StackType; //定义结构类型,其中有Box数组

StackType st; //st具备StackType结构, 应该是堆栈

st.top++; //顶层加1,这里面应当先初始化st.top为栈底值,比如0

st.data[st.top].i=X; //相当于入栈操作,栈顶元素的i和j进行赋值

st.data[st.top].j=Y; 

st.data[st.top].di=-1;

数据结构 求代码解释

#includestdio.h

#includestdlib.h

struct node{

int data;

struct node *next;

};

typedef struct node NODE;

NODE *creat()//创建单链表

{

int x;

NODE *head,*p,*q;

head=(NODE *)malloc(sizeof(NODE));

head-next=NULL;//创建头结点

p=head;//p保存头结点

while(1){

scanf("%d",x);//输入结点数据

if(x==-1)//当输入数据为-1时,退出循环,链表创建完成

break;

q=(NODE *)malloc(sizeof(NODE));//申请新节点

q-data=x;//给新节点赋值

q-next=NULL;//next置NULL

p-next=q;//当前节点的next指向这个新节点

p=q;//p移动到这个新节点,循环重复这样的过程

}

return head;//返回头结点

}

void dz(NODE *head)//链表逆置

{

NODE *p,*q,*s;

p=head-next;//p保存第一个结点

q=p-next;//q保存第二个结点

p-next=NULL;//第一个结点中的next置NULL

while(q!=NULL)//这个过程实际上就是将第二个插到第一个元素的位置,第三个插到第一个元素的位置... ...最终完成链表逆置

{//以第一次循环为例

s=q-next;//s保存从第三个结点开始后的链

q-next=p;//第二个结点中的next指向第一个结点

head-next=q;//头结点指向第二个结点

p=q;//p保存第二个结点

q=s;//q保存第三个结点

//依次重复该过程

}

}

void output(NODE *head)

{

NODE *p;

p=head-next;//p保存链表第一个结点

if(p==NULL)//判断是否为空链表

printf("Empty");

else while(p!=NULL)//非空输依次输出链表元素

{

printf("%d ",p-data);

p=p-next;}

}

int main()

{

NODE *head;

int a,b;

head=creat();//创建单链表

dz(head);//逆置单链表

output(head);//输出

system("pause");

return 0;

}

求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;

}

这是修改过的,不过没太大变化,只是加了一个文件读取代码;

c语言数据结构代码题?

#includestdio.h

int main()

{

int s[111]={0};

int p;

int r[111]={0};

int n=0;

do{

scanf("%d",r[n++]);

}while(getchar()!='\n');//回车结束输入,输入n个数

scanf("%d",p);//要截取的数组长度

for(int i=0;ip;i++)

s[i]=r[i];//前p个数暂存在数组s中;

for(int i=p;in;i++)

r[i-p]=r[i];//后n-p个数移至数组前部(左边)

for(int i=n-p,j=0;in;i++,j++)

r[i]=s[j];//将数组s中暂存的数据赋值个数组r的后部(右边);

for(int i=0;in;i++)

printf("%d ",r[i]);

return 0;

}

数据结构代码

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;

}

关于数据结构代码和数据结构代码题怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

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


取消回复欢迎 发表评论:

分享到

温馨提示

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

联系我们反馈

立即下载