数据结构代码(数据结构代码题怎么写)[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;
}
数据结构代码
#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站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-14淘宝seo优化是什么意思,淘宝seo怎么优化
- 05-13网销怎么找客户资源,做销售怎么和客户聊天
- 05-13怎么投稿?,怎么投稿同城游览
- 05-13怎么搭建网站,怎么搭建网站教程
- 05-13百度怎么做关键词优化,百度移动端关键词优化
- 05-13怎么制作公司网页,怎样制作自己公司的网页
- 05-12网站是怎么建立起来的,网站是怎么建立起来的视频
- 05-11怎么在百度制作自己的网站,如何能在百度上设计个自己的网页
- 05-11seo搜索优化怎么做,seo搜索引擎如何优化
- 05-10seo是什么意思怎么解决,seo是什么意思呢
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接