C語(yǔ)言實(shí)現(xiàn)樹的動(dòng)態(tài)查找實(shí)例代碼-創(chuàng)新互聯(lián)

C語(yǔ)言實(shí)現(xiàn)樹的動(dòng)態(tài)查找實(shí)例代碼

創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元天橋做網(wǎng)站,已為上家服務(wù),為天橋各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

本例演示一種樹數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)記錄集合時(shí)的動(dòng)態(tài)查找方法。首先程序通過(guò)construct()函數(shù),利用已經(jīng)存在的結(jié)構(gòu)體數(shù)組數(shù)據(jù)建立一個(gè)二叉樹,建立樹的過(guò)程中,要保證每個(gè)節(jié)點(diǎn)的值都大于它的左子樹上節(jié)點(diǎn)的值而小于它右子樹所有節(jié)點(diǎn)的值,該函數(shù)返回建立樹的根指針;然后通過(guò)函數(shù)Search(root,name)查找,如果找到相應(yīng)的數(shù)據(jù),將其打印出來(lái),如果沒有找到,則用戶可以選擇是否將該數(shù)據(jù)插入到樹中。 

具體代碼如下:

#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
#define NUM 4
 
struct tree
{
  char name[20];
  char city[20];
  char sex[10];
  char age[10];
  char job[10];
  struct tree *left;
  struct tree *right;
};
 
struct tree Datas[NUM]=
{
  "Willing","Tianjing","Female","21","worker",NULL,NULL,
  "Tom","Beijing","Male","31","doctor",NULL,NULL,
  "Sun","Weifang","Male","24","student",NULL,NULL,
  "Marry","Shanghai","Female","19","techer",NULL,NULL
};
 
struct tree *construct(
  struct tree *root, 
  struct tree *r, 
  struct tree *Data)
{
  if(!r)
  {
    r = (struct tree *)malloc(sizeof(struct tree));
    if(!r)
    {
      printf("內(nèi)存分配失敗!");
      exit(0);
    }
    r->left = NULL;
    r->right = NULL;
    strcpy(r->name,Data->name);
    strcpy(r->city,Data->city);
    strcpy(r->sex,Data->sex);
    strcpy(r->age,Data->age);
    strcpy(r->job,Data->job);
    if(!root)
      return r;
    if(strcmp(Data->name,root->name)<0)
      root->left = r;
    else
      root->right = r;
    return r;
  }
  if(strcmp(Data->name,r->name)<0)
    construct(r,r->left,Data);
  else
    construct(r,r->right,Data);
 
  return root;  
}
 
struct tree *Search(root,name)
struct tree *root;
char name[];
{
  struct tree *p;
  if(root == NULL)
    printf("該樹為空\(chéng)n");
  p = root;
  while(strcmp(p->name,name)!=0)
  {
    if(strcmp(p->name,name)>0)
      p = p->left;
    else
      p = p->right;
    if(p == NULL)
      break;
  }
  return(p);
}
 
void print(struct tree *r)
{
  if(!r)
    return;
  print(r->left);
  printf("%s\n",r->name);
  print(r->right);
}
 
void print_currentData(struct tree *point)
{
  if(point == NULL)
    return;
  printf("  姓名:%s\n",point->name);
  printf("  城市:%s\n",point->city);
  printf("  性別:%s\n",point->sex);
  printf("  年齡:%s\n",point->age);
  printf("  工作:%s\n",point->job);
}
 
int main(void)
{
  int i;
  char c[10];
  char swap[20];
  char name[20];
  struct tree *root,*p;
  struct tree *temp;
  p = NULL;
  temp = NULL;
  root = NULL;
  for(i = 0;i<NUM;i++)
    root =construct(root,root,&Datas[i]);
  printf("現(xiàn)有人員資料:\n");
  print(root);
  printf("請(qǐng)輸入要查找的人的名字\n");
  scanf("%s",name);
  p = Search(root,name);
  if(p == NULL)
  {
    printf("沒有該人資料\n");
    printf("是否要插入該人資料[y/n]\n");
    scanf("%s",c);
    if(strcmp(c,"y")==0)
    {
      temp = (struct tree *)malloc(sizeof(struct tree));
      if(!temp)
      {
        printf("內(nèi)存分配失?。?);
        exit(0);
      }
      printf("請(qǐng)輸入該人姓名:\n");
      scanf("%s",swap);
      strcpy(temp->name,swap);
      printf("請(qǐng)輸入該人所在城市:\n");
      scanf("%s",swap);
      strcpy(temp->city,swap);
      printf("請(qǐng)輸入該人性別[Male/Female]:\n");
      scanf("%s",swap);
      strcpy(temp->sex,swap);
      printf("請(qǐng)輸入該人年齡:\n");
      scanf("%s",swap);
      strcpy(temp->age,swap);
      printf("請(qǐng)輸入該人工作:\n");
      scanf("%s",swap);
      strcpy(temp->job,swap);
      temp->left = NULL;
      temp->right = NULL;
      root =construct(root,root,temp);
      print_currentData(temp);
      printf("現(xiàn)有人員資料:\n");
      root = root;
      print(root);
    }
    else
      return 0;
  }
  print_currentData(p);
  return 1;
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:C語(yǔ)言實(shí)現(xiàn)樹的動(dòng)態(tài)查找實(shí)例代碼-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article18/cdsggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司