學生的學號、姓名
根據輸入資料建立一棵二叉樹(第乙個輸入資料作為根節點),要求:左子樹節點的學號總比根節點小,右子樹節點的學號總比根節點大。
(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...