当前位置:高考知识网 > 招聘笔试题 > 正文

中兴软件笔试题和面试题答案及答案(二)

更新时间:2023-08-24 19:17:15 高考知识网 www.xjdkctz.com

  main()

  {int a[11],i,x,chang;

  aga:

  printf("nchang:1: use watching method findingn 2:use half method findingn 3: use

  directness intsert method sortn 4:use bubble up method sortn 5:exitn");

  scanf("%d",&chang);

  switch (chang)

  {case 1:

  {creat(a);

  printf("Please int the search number:n");

  scanf("%d",&x);

  printf("The number station is:%dn",search(a,N,x));

  goto aga;

  }

  case 2:

  { creat(a);

  insertsort(a);

  print(a);

  printf("Please int the search number:n");

  scanf("%d",&x);

  printf("The number station is:%dn",halfsearch(a,N,x));

  goto aga;

  }

  case 3:

  {creat(a);

  insertsort(a);

  print(a);

  goto aga;

  }

  case 4:

  {creat(a);

  mpsort(a);

  print(a);

  goto aga;

  }

  case 5:{ printf("exit!n");break;}

  default:{printf("Error!n"); goto aga;}

  }

  }

  二、线性链表的存储实现

  struct LNODE{

  ElemType data;

  struct LNODE *next;

  };

  typedef struct LNODE LNode;

  typedef struct LNODE * LinkList;

  1 初始化操作

  Status Init_L(LinkList L){

  if (L=(LinkList *)malloc(sizeof(LNode)))

  {L->next=NULL;return 1;}

  else return 0;

  }

  2 插入操作

  Status ListInsert_L(LinkList &L,int i,ElemType e){

  p=L,j=0;

  while(p&&jnext;++j;}

  if(!p||j>i-1) return ERROR;

  s=(LinkList)malloc(sizeof(LNode));

  s->data=e;s->next=p->next;

  p->next=s;

  return OK;

  }//ListInsert_L

  3 删除操作

  Status ListDelete_L(LinkList &L,int i,ElemType &e){

  p=L,j=0;

  while(p&&jnext;++j;}

  if(!p->next||j>i-1) return ERROR;

  q=p->next;p->next=q->next;

  e=q->data;free(q);

  return OK;

  }//ListDelete_L

  4 取某序号元素的操作

  Status GetElem_L(LinkList &L,int i,ElemType &e){

  p=L->next,j=1;

  while(p&&jnext;++j;}

  if(!p||j>i) return ERROR;

  e=p->data;

  return OK;

  }//GetElem_L

  5 归并两个单链表的算法

  void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){

  //已知单链线性表La 和Lb 的元素按值非递减排列

  //归并后得到新的单链线性表Lc,元素也按值非递减排列

  pa=La->next;pb=Lb->next;

  Lc=pc=La;

  while(pa&&pb){

  if(pa->data<=pb->data){

  pc->next=pa;pc=pa;pa=pa->next;

  }else{pc->next=pb;pc=pb;pb=pb->next;}

  }

  pc->next=pa?pa:pb;

  free(Lb);

  }//MergeList_L

  头指针与头结点的区别:

  头指针只相当于结点的指针域,头结点即整个线性链表的第一个结点,它的数据域可以放数据元素,

  也可以放线性表的长度等附加信息,也可以不存储任何信息。