國家工信部網(wǎng)站備案實(shí)名:湖北自考網(wǎng) 為考生提供湖北自考信息服務(wù),僅供學(xué)習(xí)交流使用,官方信息以湖北教育考試院為準(zhǔn)。
湖北自考在線 湖北學(xué)位英語培訓(xùn)班 湖北成人高考報(bào)名 湖北自考視頻免費(fèi)領(lǐng)取

北大“數(shù)據(jù)結(jié)構(gòu)”上機(jī)考試復(fù)習(xí)題總結(jié)(2) -自考串講筆記

湖北自考網(wǎng) 來源: 時(shí)間:2008-11-08 15:41:20

  數(shù)據(jù)結(jié)構(gòu)練習(xí)題4

  1. 編一C程序,它能根據(jù)輸入的二叉樹中序和后序序列來構(gòu)造該二叉樹,并能輸出該二叉樹的前序序列和該二叉樹的度為2的結(jié)點(diǎn)的個(gè)數(shù)并能判斷該二叉樹是否為二叉排序樹(若是輸出Yes;否則輸出No)。(輸入次序是:表示中序序列的字母串、表示后序序列的字母串)。

 ?。ㄗⅲ撼绦虻目蓤?zhí)行文件名必須是 e1.exe,存于你的賬號(hào)或其debug目錄下。)

  #include <stdio.h>

  #include <malloc.h>

  #include <string.h>

  void exit(int);

  #define MAX 100

  typedef struct node{

  char d;

  struct node *lchild,*rchild;

  }Tnode;

  void MKTree(char in[],int is,int ie,char post[],int posts,int poste,Tnode **r)

  {

  int i;

  if(is<ie||posts<poste)

  *r=NULL;

  else{

  *r=malloc(sizeof(Tnode));

 ?。?r)->d=post[poste];

  for(i=is;i<=ie;i++)

  if(post[poste]==in[i])

  {

  MKTree(in,is,i-1,post,posts,posts+i-is-1,&(*r)->lchild);

  MKTree(in,i+1,ie,post,posts+i-is,poste-1,&(*r)->rchild);

  break;

  }

  if(i>ie){

  printf(“Error:input contain an error !\n”);

  exit(9);

  }

  }

  }

  void BST(char in[],int is,int ie)

  {

  int i;

  if(is==ie)

  printf(“yes\n”);

  else

  {

  for(i=is;i<=ie;i++)

  {

  if(in[i]<in[i+1])

  continue;

  else

  break;

  }

  if(i==ie)

  printf(“YES\n”);

  else

  printf(“NO\n”);

  }

  }

  void preorder(Tnode *r)

  {

  if(r)

  {

  printf(“%c”,r->d);

  preorder(r->lchild);

  preorder(r->rchild);

  }

  }

  int seconde(Tnode *r)

  {

  if(r==NULL)

  return 0;

  else

  if((r->lchild)!=NULL&&(r->rchild)!=NULL)

  return 1;

  else

  return seconde(r->lchild)+seconde(r->rchild);

  }

  void main()

  {

  Tnode *r;

  char post[MAX],in[MAX];

  printf(“input inorder and postorder !\n”);

  gets(in);

  gets(post);

  MKTree(in,0,strlen(in)-1,post,0,strlen(post)-1,&r);

  printf(“the preorder is as follows:\n”);

  preorder(r);

  printf(“\n there are %d seconde in the tree \n”,seconde(r));

  printf(“if the tree is BST:\n”);

  BST(in,0,strlen(in)-1);

  }

  2.編一C程序,它能讀入一串整數(shù)(以-9999為結(jié)束標(biāo)記),再以與輸入次序相反的次序輸出這串整數(shù)(輸入、出時(shí),兩個(gè)相鄰的整數(shù)用空格隔開)。

 ?。ㄗⅲ撼绦虻目蓤?zhí)行文件名必須是 e2.exe,存于你的賬號(hào)或其debug目錄下。)

  #include <stdio.h>

  #define max 10000

  main()

  {

  int a[max];

  int n=0,i,d;

  printf(“please enten tne number:\n”);

  do{

  scanf(“%d”,&d);

  if(d==-9999)

  break;

  n++;

  a[n]=d;

  }while(9);

  for(i=n;i>0;i——)

  printf(“%4d”,a[i]);

  printf(“\n”);

  }

  數(shù)據(jù)結(jié)構(gòu)練習(xí)題5

  1. 編一C程序,它能讀入一個(gè)大寫英文字母串(字母個(gè)數(shù)不多于100,字母兩兩不同),并構(gòu)造以這些字母為關(guān)鍵字的二叉排序樹,再輸出該二叉排序樹的后序序列和頁結(jié)點(diǎn)個(gè)數(shù)。

 ?。ㄗⅲ撼绦虻目蓤?zhí)行文件名必須是 e1.exe,存于你的賬號(hào)或其debug目錄下,否則無成績)

  2. 編一C程序,它能讀入兩組整數(shù)(每組整數(shù)都以-9999為結(jié)束標(biāo)記,-9999不算在內(nèi)。個(gè)數(shù)都不大于1000),并以從小到大的次序輸出既在第一組整數(shù)中也在第二組整數(shù)中的所有整數(shù)(同一個(gè)整數(shù)不能輸出兩次)。(輸入時(shí),兩個(gè)相鄰的整數(shù)用空格隔開)。

 ?。ㄗⅲ撼绦虻目蓤?zhí)行文件名必須是 e2.exe,存于你的賬號(hào)或其debug目錄下,否則無成績)

  #include <stdio.h>

  void paixu(int r[],int n)

  {

  int i,j,k;

  int exchange;

  for(i=0;i<=n;i++)

  {

  exchange=0;

  for(j=n-1;j>=i;j——)

  if(r[j+1]<r[j])

  {

  k=r[j+1];

  r[j+1]=r[j];

  r[j]=k;

  exchange=1;

  }

  if(!exchange)

  break;

  }

  }

  int jiaoji(int m[],int n[],int l[],int countaa,int countbb)

  {

  int w,x,y;

  int i=0,j=0,k=0;

  for(w=0;w<=countaa;w++)

  {

  for(x=w+1;x<=countaa;x++)

  {

  if(m[w]==m[x])

  {

  countaa——;

  for(y=x;y<=countaa;y++)

  {

  m[y]=m[y+1];

  }

  x——;

  }

  }

  }

  while(i<=countaa)

  {

  for(j=0;j<=countbb;j++)

  {

  if(m[i]==n[i])

  {

  l[k]=m[i];

  k++;

  break;

  }

  }

  i++;

  }

  return k;

  }

  void main()

  {

  int a[1000],b[1000],c[2000];

  int excange=0,i,countA,countB,countC;

  printf(“請(qǐng)輸入數(shù)組a: \n”);

  for(i=0;i<=1000;i++)

  {

  scanf(“%d”,&a[i]);

  if(a[i]==-9999)

  break;

  }

  countA=i-1;

  paixu(a,countA);

  printf(“請(qǐng)輸入數(shù)組b: \n”);

  for(i=0;i<=1000;i++)

  {

  scanf(“%d”,&b[i]);

  if(b[i]==-9999)

  break;

  }

  countB=i-1;

  paixu(b,countB);

  countC=jiaoji(a,b,c,countA,countB);

  printf(“\n\n”);

  for(i=0;i<=countC-1;i++)

  printf(“%d”,c[i]);

  printf(“\n”);

結(jié)束
本文標(biāo)簽
特別聲明:1.凡本網(wǎng)注明稿件來源為“湖北自考網(wǎng)”的,轉(zhuǎn)載必須注明“稿件來源:湖北自考網(wǎng)(m.mayirecommend.com)”,違者將依法追究責(zé)任;
2.部分稿件來源于網(wǎng)絡(luò),如有不實(shí)或侵權(quán),請(qǐng)聯(lián)系我們溝通解決。最新官方信息請(qǐng)以湖北省教育考試院及各教育官網(wǎng)為準(zhǔn)!
2025年湖北自考人手一份助学资料包,限时免费领取!

自考押题资料领取

限時(shí),免費(fèi)獲取學(xué)歷提升方案

已幫助10w萬+意向?qū)W歷提升用戶成功上岸

  • 毛澤東思想概論

    毛澤東思想概論

    培訓(xùn)優(yōu)勢(shì):課時(shí)考點(diǎn)精講+刷題+沖刺,熟練應(yīng)對(duì)考試題型。全程督促學(xué)習(xí),安排好學(xué)習(xí)計(jì)劃。 毛澤東思想概論...自考培訓(xùn)
  • 英語二

    英語二

    本課程既是一門語言實(shí)踐課程,也是拓寬知識(shí)、了解世界文化的重要素質(zhì)課程,它以培養(yǎng)學(xué)習(xí)者的綜合語言應(yīng)用能力為目標(biāo),使他們?cè)趯W(xué)習(xí)、工作和社會(huì)交往中能夠使用英語進(jìn)行有效的交流。 英語二...自考培訓(xùn)
  • 馬克思主義基本原理概論

    馬克思主義基本原理概論

    本書包括兩個(gè)部分:自學(xué)考試大綱和基本原理。主要內(nèi)容有,馬克思主義是關(guān)于工人階級(jí)和人類解放的科學(xué),物質(zhì)世界及其發(fā)展規(guī)律,認(rèn)識(shí)的本質(zhì)及其規(guī)律,人類社會(huì)及其發(fā)展規(guī)律,資本主義的形成及其發(fā)展,資本主義發(fā)展的歷史進(jìn)程,社會(huì)主義社會(huì)及其進(jìn)程,共產(chǎn)主義社會(huì)及其進(jìn)程等。 馬克思主義基本原理概論...自考培訓(xùn)
  • 思想道德修養(yǎng)與法律基礎(chǔ)

    思想道德修養(yǎng)與法律基礎(chǔ)

    《思想道德修養(yǎng)與法律基礎(chǔ)》課具有鮮明的政治性、思想性、理論性、針對(duì)性、科學(xué)性、知識(shí)性以及實(shí)踐性和修養(yǎng)性。它包羅政治、思想、道德、心理本質(zhì)、學(xué)習(xí)成才和法律本質(zhì)等內(nèi)容,指導(dǎo)和回答大學(xué)生在人生、抱負(fù)、信念等方面遍及關(guān)心和迫切需要解決的問題。 思想道德修養(yǎng)與法律基礎(chǔ)...自考培訓(xùn)
  • 中國近代史綱要

    中國近代史綱要

    “中國近現(xiàn)代史綱要”全國高等教育自學(xué)考試指定教材,依據(jù)中央審定的普通高等學(xué)?!爸袊F(xiàn)代史綱要”編寫大綱以及馬克思主義理論研究和建設(shè)工程重點(diǎn)教材《中國近現(xiàn)代史綱要》,結(jié)合自學(xué)考試的特點(diǎn)設(shè)計(jì)了十章,集中講述1840年鴉片戰(zhàn)爭爆發(fā)一直到2007年中國共產(chǎn)黨第十七次全國代表大會(huì)召開的160多年的中國近現(xiàn)代歷史。 中國近代史綱要...自考培訓(xùn)
微信公眾號(hào) 考試交流群
湖北自考網(wǎng)微信公眾號(hào)

掃一掃關(guān)注微信公眾號(hào)

隨時(shí)獲取湖北省自考政策、通知、公告以及各類學(xué)習(xí)資料、學(xué)習(xí)方法、課程。