c語言描述資料結構應用

2021-08-28 16:33:05 字數 2482 閱讀 3299

學生的學號、姓名

根據輸入資料建立一棵二叉樹(第乙個輸入資料作為根節點),要求:左子樹節點的學號總比根節點小,右子樹節點的學號總比根節點大。

(1)鍵盤輸入你所在宿舍的同學資訊到二叉樹;

(2)按學號大小輸出所有同學資訊;

(3)給定學號,查詢該學號同學的姓名;

//樹的操作

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

struct tree

int no;

char name[20];

struct tree *left;

struct tree *right;

typedef struct tree treenode;

typedef treenode *bitree;//

bitree insertnode(bitree root,int no,char *name)

bitree newnode;//指標變數

bitree current;

bitree back;

newnode=(bitree)malloc(sizeof(treenode));

printf("\n動態分配記憶體出錯.\n");

exit(1);

newnode->no=no;

strcpy(newnode->name,name);

newnode->left=null;

newnode->right=null;

if(root==null)//根結點為空

return newnode;

else

current=root;//當前變數指向的位置

while(current!=null)

back=current;

if(current->no > no)

current=current->left;//current指向curret所指的結點左邊

else

current=current->right;//右邊

if(back->no > no)//當while條件不成立,執行,確定那個新結點位置

back->left=newnode;

else

back->right=newnode;//右孩子

return root;

bitree createtree() //建立二叉樹(非遞迴)

bitree root=null;//初始化

char name[20];

int len;

int no;

int i;

printf("建立二叉樹,請輸入節點的總數量: ");

scanf("%d",&len);

for(i=0;iprintf("輸入第%d個節點(學號 姓名): ",i+1);

scanf("%d",&no);

scanf("%s",name);

root=insertnode(root,no,name);

return root;

void inorder(bitree ptr)

if (ptr != null)

inorder(ptr->left);

printf("學號:%d\t姓名:%s\n", ptr->no, ptr->name);

inorder(ptr->right);

//按照學號查詢二叉樹

bitree btreefind(bitree ptr,int no)

while (ptr != null)

if (ptr->no == no)//比較是否是那個學號

return ptr;

else

if (ptr->no > no)

ptr = ptr->left;//

else

ptr = ptr->right;

return null;

int main()

bitree root=null;

bitree ptr;

int no;

root=createtree(); //建立二叉樹

printf("\n所有同學的資訊:\n");

inorder(root);

printf("\n");

while(1)

printf("\n輸入要查詢的學號(輸入0退出): ");

scanf("%d",&no);

if(no<=0)

break;

ptr=btreefind(root,no);

if(ptr==null)

printf("沒有學號%d的同學\n",no);

else

printf("學號%d的同學的姓名是:%s\n",no,ptr->name);

}

printf("\n");

return 0;

用C語言描述資料結構

用c語言描述資料結構 學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解 然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算 在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本...

資料結構(C語言描述)棧

棧是一種特殊的表,這種表只在表首進行插入和刪除操作。因此,表首對棧來說具有特殊的意義,稱為棧頂。表尾稱為棧底。不含任何元素的棧稱為空棧。假設乙個棧s中的元素為a n a n 1 a 1 則稱a 1 為棧底元素,a n 為棧頂元素。棧中元素按a 1 a 2 a n 的次序進棧。在任何時候,出棧的元素都...

C語言描述資料結構 封裝DLL

vs建立dll的過程 dll的空專案建立完成後,建立dll的標頭檔案,如下 ifdef myfirstdll h define myfirstdll h endif include include declspec dllexport int add int a,int b declspec dll...