当前位置:首页 » 编程语言 » c语言结构大数据
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言结构大数据

发布时间: 2022-08-17 17:35:26

A. c语言的数据结构是什么

数据结构,data
strucure
是具有特定关系的数据元素的集合。它包含两方面的信息:D+S
D
即数据元素的集合,也就是数据对象;S
数据元素间的关系,而这种关系指的是数据元素之间本身的关系
也叫做逻辑结构!而这种逻辑结构需要通过一种高级语言
比如c语言才能使得将这种逻辑结构在计算机中表现出来
也就是通过高级语言存储结构。

B. C语言数据结构求解

1、head=malloc(sizeof(Node));//头结点

这个返回的是 void *, 你要的是 linklist, 所以要强制类型转换一下
head = (linklist)malloc(sizeof(Node));

2、求链表的长度函数,那个循环里面 p 应该小写呀。

C. C语言用数组存储大型数据的算法

/*
size_a,pa——指向数组a的有效末端
ma——a的最大容量,必须大于na

n=12——求n的阶
p——求阶乘时的当前乘数
*/
#include<stdio.h>
#define Ma 10000
int pa;/*指向数组a的有效末端*/
int p=2;
int memory_over=0;
union data
{ unsigned long int b;
struct
{unsigned l:16;
unsigned h:16;
}m;
}a[Ma];
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
算法说明1:考虑到result比较长,我用a[Ma].b来存储n!的result,每一位a[pa].b能存储4位10进制数字。
因为我定义的数组是静态的,所以Ma应该足够大。
ps:其实只用定义一个unsigned long int b[Ma];就可以了(直接用b[pa]代替a[pa].b),但是我考虑到可能会访问每一结点b[pa]的高16位(a[pa].m.h)和低16位(a[pa].m.l),但是的我考虑是多余的!!不用像我这样定义这么复杂的共用体!!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
unsigned int cashe;
unsigned int carry;

void main()
{
unsigned int n;/*求n的阶*/
void facto(unsigned int n);
printf("Input n:");
scanf("%u",&n);
/*=================开始求阶乘!=============*/
a[0].b=1;/*初始化*/
facto(n);
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
算法说明2:上面这句直接调用facto(n)来求n!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*========================以下是显示最后结果====================================*/
if(memory_over==0)
{printf("the result include %dNO:\n",pa+1);
printf("%u",a[pa--].m.l);
for(;pa>=0;pa--)
printf("%04u",a[pa].m.l);
printf("\n");
}
getch();
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
算法说明2:求阶函数facto(n)说明:
这个函数会不断地调用multiple(),它的作用是每被调用一次就使得a[pa].b与阶数p相乘一次,直到乘完n为止!
{multiple();
p++;/*每一轮乘一个阶数p*/
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void facto(unsigned int n)
{void multiple();
pa=0;
while(pa<Ma-1&&p<=n)/*容量限制*/
{multiple();
p++;/*每一轮乘一个阶数p*/
}
if(p<=n)
{printf("memory out!\n");memory_over=1;}/*如果当前的存储结果的数组a[Ma]不够用!应提高Ma*/

}

/*==============================================================================
算法说明3:乘法函数multiple()说明:负责a[pa].b与阶数p相乘。
a[pa].b有很多结点,a[0].b、a[1].b、a[2].b、a[3].b、a[4].b、。。。
当然是从低结点a[0].b开始不断与p相乘,产生的“进位”加到高位a[1].b,直到a[pa].b*p为止!

随着结果数值增大,pa个结点的a[].b可能容纳不下结果,所以如果a[pa].b与p相乘后还有“进位”carry,就扩大pa,并把carry放入到新增加的结点:
if(carry>0)
a[++pa].b=carry;
===================================================================================*/
void multiple()
{int i=0;
carry=0;
while(i<=pa)/*i指向当前处理的元素a[i],每一轮用一个位与阶数p相乘*/
{a[i].b=a[i].b*p+carry;/*计算结果,要考虑来自低位的进位*/
carry=a[i].b/10000;/*计算进位*/
a[i].b=a[i].b%10000;/*计算余数*/
i++;
}
if(carry>0)
a[++pa].b=carry;
}

D. C语言中所谓的数据结构是什么啊

1.<stdio.h>一般写C语言程序都要加这个头文件,因为它包含scanf()、printf()等控制输入和输出的函数:
<time.h>包含的主要是和时间相关的函数
<string.h>主要包含用来拷贝或比较字符串的函数
<stdlib.h>主要包含这几个函数:malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()
这是比较常用到的头文件。

2.typedef struct{
SElemtype *base;
SElemtype *top
int stacksize;
}SqStack;
以上为声明一个结构体,并用SqStack作为这个结构体名,结构体为自定义的数据类型。
其中selemtype也是一个自定义的结构体名,具体代表什么还要看具体的代码。

E. 数据结构(C语言描述)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#defineDataTypeint
#defineMAXSIZE1000
typedefstructnode{
DataTypedata;
structnode*lchild;
structnode*rchild;
}BiTreeNode;
DataTypeBT[MAXSIZE];
BiTreeNode*BuildBTree(DataTypeBT[],intn,inti)
{
BiTreeNode*node;
if(i>=n||(node=(BiTreeNode*)malloc(sizeof(BiTreeNode)))==NULL)returnNULL;
node->data=BT[i];
node->lchild=BuildBTree(BT,n,2*i+1);
node->rchild=BuildBTree(BT,n,2*i+2);
returnnode;
}
voidPrintLevel(BiTreeNode*bt,intlevel,intl)
{
if(!bt)return;
if(l<level)
PrintLevel(bt->lchild,level,l+1);
if(l==level)
printf("%4d",bt->data);
if(l<level)
PrintLevel(bt->rchild,level,l+1);
}
/*先序凹入表示法输出,一般通过前导的空格来凹入#*/
/*pre,sur分别为前导后续字符,一般前导为空格字符,#*/
voidPrintTree(BiTreeNode*bt,charpre,charsur,intdepth,intlevel){
if(bt==NULL)return;/*如果为空树,return;*/
inti=0;/*先序输出根*/
while(++i<level)printf("%c%c%c%c",pre,pre,pre,pre);//凹入,输出前导字符
printf("%4d",bt->data);//输出当前节点
while(i++<depth)printf("%c%c%c%c",sur,sur,sur,sur);//输出后续字符
printf(" ");
/*输出子树*/
PrintTree(bt->lchild,pre,sur,depth,level+1);
PrintTree(bt->rchild,pre,sur,depth,level+1);
}
voidCTBT(intn)
{//建立初始n个节点的完全二叉树
while(n--)BT[n]=n;
}
intmain()
{
inti,n,depth;
BiTreeNode*bt;
scanf("%d",&n);
CTBT(n);
bt=BuildBTree(BT,n,0);
depth=(int)(log(n)/log(2))+1;
i=0;
while(++i<=depth)
{
printf(" The%dthLevel:",i);
PrintLevel(bt,i,1);
}
printf(" ");
PrintTree(bt,'','-',depth,1);
return0;
}

经调试这个没问题,完成了要求的三个功能

F. 数据结构题怎么写,要c语言过程

1、算法有啦一个大致的雏形后,想清楚算法的流程,然后先将主程序打好,细节先用过程与函数代替。
2、然后再完善细节部分。
3、最后构造一些数据测试。
建议构造3种数据。
第一种随机生成的大数据,以检验程序在平均情况下的时间效率。
第二种是人工构造的奇葩/猥琐数据,且最好能确定答案,以检验其正确性,比如贪心的一些可能的反例。
最后一种是人工构造的特殊数据,比如,在有关树的题目中,将输入中的树退化成一条链。

G. c语言数据结构

#include <iostream>
#define daxiao 100
using namespace std;

typedef struct bitnode//树结点
{
char data;
struct bitnode * lchild,* rchild;
}bitnode,* bitree;

void inint(bitree &b//树根地址,char s[]//输入串)//初始化二叉树
{
int top,j,k;
top=0;//表示树的层数
j=0;//当前操作字符序号
k=1;//是操作1左、2右结点
char ch;
bitree q[100],p=NULL;//p保存新建结点地址
b=NULL;//保存下一次操作的结点地址
ch=s[j++];
while (ch!='\0')
{
switch (ch)
{
case '(': q[top++]=p;k=1;break;//输入字符为'(',增加子树,层数加一,下一个结点放左边k=1
case ',': k=2;break;;//输入字符为',',下一个结点放右边k=2
case ')': top--;break;;//输入字符为')',本子树构造完成,回到本结点的父结点操作
default:p=(bitree)malloc(sizeof(bitnode));//输入字符为是普通字符,建一新结点,p->data保存字符ch的值。
p->data=ch;p->lchild=p->rchild=NULL;
if (b==NULL)//树根
b=p;//保存p为下一次操作的结点地址
else
{
switch(k)
{
case 1:q[top-1]->lchild=p;break;
case 2:q[top-1]->rchild=p;break;
}
}
}
ch=s[j++];//取下一个字符
}
}
void Inorder(bitree b)//中序递归遍历打印二叉树
{
if (b!=NULL)
{
Inorder(b->lchild);
cout<<b->data;
Inorder(b->rchild);
}
}
int main()
{
char s[1000];
bitree b;
cin>>s;
inint (b,s);
Inorder(b);
cout<<endl;
return 0;
}

H. C语言基础,大数据的输入和输出

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX101
intcheck(char*a){
inti,n,k=1;
n=strlen(a);
for(i=0;i<n;i++)
if(a[i]>'9'||a[i]<'0'){
k=0;
break;
}
returnk;
}
intplus(char*a,char*b,int*s){
inti,j,n,m,t,k=0;
//printf("%s %s ",a,b);
i=strlen(a)-1;
j=strlen(b)-1;
t=0;
while(i>=0&&j>=0){
t=t+a[i--]-'0'+b[j--]-'0';
s[k++]=t%10;
t=t/10;
}
if(t&&(i!=j))
s[k]=t;
if(t&&(i==j))
s[k++]=t;
while(i>=0){
s[k]+=a[i--]-'0';
k++;
}
while(j>=0){
s[k]+=b[j--]-'0';
k++;
}
for(i=k-1;i>=0;i--){
printf("%d",s[i]);
}
printf(" ");
returnk;
}
intmain(intargc,char*argv[]){
chara[MAX],b[MAX];
intc[MAX+2]={0};
scanf("%s%s",&a,&b);
//printf("%s %s ",a,b);
if(check(a)&&check(b))
plus(a,b,c);
else
printf("error ");
return0;
}

I. c语言常见的数据结构有哪些

1、线性数据结构


元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表。


2、树形结构


结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆。


3、图形结构


在图形结构中,允许多个结点之间相关,称为“多对多”关系。


(1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表


(2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆


(3)图形结构:在图形结构中,允许多个结点之间相关,称为“多对多”关系