導航:首頁 > 數據分析 > 數據結構的聲明代碼怎麼寫

數據結構的聲明代碼怎麼寫

發布時間: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);
}

閱讀全文

與數據結構的聲明代碼怎麼寫相關的資料

熱點內容
win10雙屏拖文件 瀏覽:291
win10系統打開文件夾不對 瀏覽:444
線上有哪些批發商城app 瀏覽:632
mkv文件是什麼 瀏覽:817
文件夾xml怎麼改成word 瀏覽:293
excel表格如何建立資料庫 瀏覽:378
國外程序員兼職平台 瀏覽:575
如何在電腦上查看寬頻密碼是什麼 瀏覽:689
下級收到領導文件回復簽字寫什麼 瀏覽:405
廈門學少兒編程哪裡有 瀏覽:119
重要文件公司保留多少年 瀏覽:53
win10藍屏找不到系統文件怎麼處理 瀏覽:287
怎麼把手機word文件發送到微信里 瀏覽:57
網路學習的學分什麼時候到 瀏覽:376
qq飛車k2輪滑特性 瀏覽:321
cat寫入文件寫錯了 瀏覽:308
java增量編譯 瀏覽:10
網站排名突然掉了什麼時候能恢復 瀏覽:169
星光筆刷教程 瀏覽:41
電腦是怎麼儲存文件 瀏覽:615

友情鏈接