本文目录一览:
求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语言数据结构这几行代码什么意思,可以分别解释一下么新手小白求教?
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;
求数据结构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;
}
这是链表的输入输出,你试下不行再改