导航:首页 > 数据分析 > 数据结构的声明代码怎么写

数据结构的声明代码怎么写

发布时间:2023-01-17 11:34:05

A. 数据结构c语言那些函数的声明怎么写

int add(int x, int y); //这就是函数声明
int main(void)
{
........
}

int add(int x, int y) //函数定义
{
........
}

B. 一个c++的数据结构问题,二叉树中关于建立二叉树的代码,请大虾们帮忙写一下,

//二叉树结点类型为字符型的情况
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define null 0
#define MaxSize 1024
typedef struct tree
{ /*声明树的结构*/
struct tree *left; /*存放左子树的指针*/
struct tree *right; /*存放右子树的指针*/
char data; /*存放节点的内容*/
} treenode, * b_tree; /*声明二叉树的链表*/

b_tree Q[MaxSize];

/*建立二叉树,按完全二叉树的层次遍历序列输入*/
b_tree createbtree()
{
char ch;
int front,rear;
b_tree root,s;
root=NULL;
front=1;rear=0;
ch=getchar();
getchar();
while(ch!='?')
{
s=NULL;
if(ch!='.')
{
s=(b_tree)malloc(sizeof(treenode));
s->data=ch;
s->left=NULL;
s->right=NULL;
}
rear++;
Q[rear]=s;
if(rear==1)
root=s;
else
{
if(s&&Q[front])
if(rear%2==0)
Q[front]->left=s;
else
Q[front]->right=s;
if(rear%2==1)
front++;
}
ch=getchar();
getchar();
}
return root;
}

/*先序遍历打印二叉排序树*/
void preorder_btree(b_tree root)
{
b_tree p=root;
if(p!=null)
{
printf("%3c",p->data);
preorder_btree(p->left);
preorder_btree(p->right);
}
}

/* 中序遍历打印二叉排序树*/
void inorder_btree(b_tree root)
{
b_tree p=root;
if(p!=null){
inorder_btree(p->left );
printf("%3c",p->data );
inorder_btree(p->right );
}
}

/*后序遍历打印二叉排序树*/
void postorder_btree(b_tree root)
{
b_tree p=root;
if(p!=null)
{
postorder_btree(p->left );
postorder_btree(p->right );
printf("%3c",p->data );
}
}

/*求树的高度*/
int treedepth(b_tree bt)
{
int hl,hr,max;
if(bt!=null)
{
hl=treedepth(bt->left);
hr=treedepth(bt->right);
max=(hl>hr)?hl:hr;
return (max+1);
}
else
return 0;
}

int count=0;
/*求叶子结点总数*/
int leafcount(b_tree bt)
{
if(bt!=null)
{
leafcount(bt->left);
leafcount(bt->right);
if(bt->left==null&&bt->right==null)
count++;
}
return count;
}

void paintleaf(b_tree bt)
{
if(bt!=null)
{
if(bt->left==null&&bt->right==null)
printf("%3c",bt->data);
paintleaf(bt->left);
paintleaf(bt->right);
}
}

typedef b_tree ElemType ;

int main()
{
char nodelist[MaxSize];
int len,flag;
char cmd;
b_tree root;
do
{
printf(" 输入c......选择创建一棵二叉排序树\n");
printf(" 输入a......将结束本程序\n\n");
flag=0;
do
{
if(flag!=0)
printf("选择操作错误!请重新选择!\n");
fflush(stdin);
scanf("%c",&cmd);
flag++;
}while(cmd!='c'&&cmd!='a');
if(cmd=='c')
{
printf("请输入那你所要创建的二叉树的结点的值,以'?'结束):\n");
getchar();
root=createbtree();
do
{
flag=0;
printf("\n\n 请选择你要对这棵二叉树所做的操作:\n\n");
printf(" x......先序遍历\n");
printf(" z......中序遍历\n");
printf(" h......后序遍历\n");
printf(" b......层次遍历\n");
printf(" d......求二叉树的深度\n");
printf(" y......求叶子总数并输出各叶子结点\n");
printf(" q......结束操作\n\n");
do
{
if(flag!=0)
printf("选择操作错误!请重新选择!\n");
fflush(stdin);
scanf("%c",&cmd);
flag++;
}while(cmd!='x'&&cmd!='z'&&cmd!='h'&&cmd!='b'&&cmd!='d'&&cmd!='y'&&cmd!='j'&&cmd!='q');
switch(cmd)
{
case 'x':
printf("\n先序遍历开始:\n");
preorder_btree(root);
printf("\n先序遍历结束\n\n");
break;
case 'z':
printf("\n中序遍历开始:\n");
inorder_btree(root);
printf("\n中序遍历结束\n\n");
break;
case 'h':
printf("\n后序遍历开始:\n");
postorder_btree(root);
printf("\n后序遍历结束\n\n");
break;

case 'd':
printf("\n这棵二叉树的高度:\n%d\n\n",treedepth(root));
break;
case 'y':
printf("\n这棵二叉树的叶子结点为:\n");
paintleaf(root);
printf("\n");
count=0;
count=leafcount(root);
printf("\n这棵二叉树的叶子总数为:\n%d\n\n",count);
count=0;
break;
}
}while(cmd!='q'&&cmd!='Q');
}
}while(cmd!='a'&&cmd!='A');
printf("****谢谢使用!欢迎指正!****\n\n");
return 0;
}

C. 一个单简数据结构的程序代码怎样写

将整个数组空间初始化成一个链表:

void IntiSpace_SL(SLinkList&space){
//将一维数组space中各分量链成一个备用链表,space[0].cur为头指针
//"0"表示空指针
for(i=0;i<MAXSIZE-1;++i)space[i].cur=i+1;
space[MAXSIZE-1].cur=0;
}//InitSpace_SL
================================================================
基于C语言的数据结构

D. 数据结构如图 代码怎么写

希望帮得上, 可能我写的复杂了、、、

intlenList(Node*head)//先用该函数来计算链表的长度
{
if(head==NULL)
return0;
Node*p=head;
intsum=0;
while(p!=NULL)
{
sum+=1;
p=p->next;
}
returnsum;
}

voidsort_Node(Node*head)//使用冒泡排序。
{
Node*p=head;
intlen=lenList(head);//len即为该单链表的长度了
if(len==0)//如果长度为0,直接结束
return;
for(inti=1;i<=len;i++)
{
p=head;
for(intj=0;j<len-i;j++)
{
if(p->ave>p->next->ave)
{
inttmp_data=p->data;
p->data=p->next->data;
p->next->data=tmp_data;
}
p=p->next;
}
}
}

E. C 结构体的声明,数据结构

  1. DuLNode 是自定义类型,是一种新类型;CirDuLinkList是指向自定义类型DuLNode的指针类型,是一种指针。

  2. DuLNode *p 和CirDuLinkList p 可以等效使用。

  3. 代码中DuLNode * 可以替换CirDuLinkList 使用,但不是DuLNode替换CirDuLinkList。

F. 用C语言写的数据结构的定义

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

在C语言中,定义一个结构的一般形式为:
struct结构名
{
//成员表列
};


成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};


在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。

然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。
int a;//定义一个int类型的变量a
stu a; //定义一个stu类型的变量a
int *p; //定义一个int类型的指针p
stu *p; //定义一个stu类型的指针p
int a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
stu a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。

G. 数据结构创建一棵树的c语言代码怎么写

刚刚回答了一个类似的问题,以下代码供参考:
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef char TElemType;
typedef int Status;
typedef struct BiTNode { // 结点结构
TElemType data;
struct BiTNode *lchild, *rchild;
// 左右孩子指针
} BiTNode, *BiTree;

//以下是建立二叉树存储结构,空节点输入作为#结束标识
Status CreateBiTree(BiTree &T) {
//请将该算法补充完整,参见第6章课件算法或课本
char ch;
scanf("%c",&ch);
if(ch=='#') T=NULL;
else{
if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;

} // CreateBiTree
void Preorder(BiTree T)
{
if(T)
{
printf("%c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}

void Inorder(BiTree T)
{ // 中序遍历二叉树
//请将该算法补充完整,参见第6章课件算法
if(T)
{
Inorder(T->lchild);
printf("%c",T->data);
Inorder(T->rchild);
}
}
void Postorder(BiTree T)
{ // 后序遍历二叉树
//请将该算法补充完整,参见第6章课件算法
if(T)
{
Postorder(T->lchild);
Postorder(T->rchild);
printf("%c",T->data);
}
}

//以下是求叶子结点数
void CountLeaf(BiTree T,int& count){
//请将该算法补充完整,参见第6章课件算法
if(T){
if((!T->lchild)&&(!T->rchild))
count++;
CountLeaf(T->lchild,count);
CountLeaf(T->rchild,count);
}
}

//以下是求二叉树的深度
int Depth(BiTree T ){
//请将该算法补充完整,参见第6章课件算法
int depthval,depthLeft,depthRight;
if(!T) depthval=0;
else{
depthLeft = Depth(T->lchild);
depthRight = Depth(T->rchild);
if(depthLeft>depthRight)depthval = 1+depthLeft;
else depthval = 1+depthRight;
}
return depthval;
}

void main(){
BiTree T;
int s=0,d;
printf("\n creat of the bitree:\n");
CreateBiTree(T);
printf("\n output result of Preorder:\n");
Preorder(T);
CountLeaf(T,s);
d=Depth(T);
printf("\n leaves=%d\n",s);
printf("\n depth=%d\n",d);
}

阅读全文

与数据结构的声明代码怎么写相关的资料

热点内容
电脑是怎么储存文件 浏览:615
iphone6怎么设置英文版 浏览:38
如何进行项目的计划编程 浏览:779
如何知道微信版本号 浏览:298
821bb改什么网站了 浏览:987
aspsql数据库怎么连接 浏览:290
qq上如何查看运动轨迹 浏览:836
魅族代码功能大全 浏览:618
qq群里下载的文件记录怎么删除怎么恢复吗 浏览:835
ug80草图视频教程 浏览:706
苹果手机录屏文件电脑无法播放 浏览:259
win10分区后如何重新分区 浏览:152
如何下载网页源文件 浏览:679
好友视频怎么传文件 浏览:452
编程的软件是用什么制作的 浏览:794
win10耳机和音响不同时响 浏览:955
爱奇艺更新后为什么不显示文件 浏览:371
iphone6指纹加密 浏览:164
易趣编程怎么联系 浏览:285
苏州拉拉群80后微信 浏览:924

友情链接