当前位置: 首页 > news >正文

中文网站建设工具做网站建设的价格

中文网站建设工具,做网站建设的价格,河南国基建设集团--官方网站,靖江做网站哪家好1、设有两个整型顺序表L1#xff0c;L2#xff0c;其元素值递增有序存放#xff0c;请定义该顺序表的元素类型及表类型,设计以下自定义函数#xff1a; #xff08;1#xff09;录入顺序表中所有元素的值。 #xff08;2#xff09;将顺序表L1#xff0c;L2合并为到…1、设有两个整型顺序表L1L2其元素值递增有序存放请定义该顺序表的元素类型及表类型,设计以下自定义函数 1录入顺序表中所有元素的值。 2将顺序表L1L2合并为到另外一个顺序表L3中L3中的元素非递减有序排列。 3输出顺序表中元素的值。 主函数通过调用以上函数实现两个表的合并并显示合并结果。 #includestdio.h #includestdlib.h #define MAXLEN 100      typedef struct {        int data[MAXLEN1];     int len; }SeqList;         /*录入*/ void input(SeqList*L) {      int i;     printf(input the length\n);     scanf(%d,L-len);     printf(input element\n);     for(i1;iL-len;i)      scanf(%d,L-data[i]); } /*合并*/ void merge(SeqList* A , SeqList* B, SeqList *C) {       int i,j,k;     i1;j1;k1;               while(iA-lenjB-len)         if(A-data[i]B-data[j])             C-data[k]A-data[i];         else C-data[k]B-data[j];     while(iA-len)             C-data[k]A-data[i];              while(jB-len)                          C-data[k]B-data[j];               C-lenk-1;  }          /*显示*/ void output(SeqList*L) {     int i;     for(i1;iL-len;i)         printf(%5d\n,L-data[i]); } /*菜单*/     void menu()     {     printf(1-------------表1录入\n);     printf(2-------------表2录入\n);     printf(3-------------合并\n);     printf(4-------------输出合并后的表\n);     printf(0-------------退出\n);     } int main() {     SeqList* L1,*L2,*L3;       int sel;     L1(SeqList*)malloc(sizeof(SeqList));     L1-len0;      L2(SeqList*)malloc(sizeof(SeqList));     L2-len0;      L3(SeqList*)malloc(sizeof(SeqList));     L3-len0;      do     {         menu();        printf(input your select\n);        scanf(%d,sel);        switch(sel)        {        case 1:  printf(input list1\n);              input(L1);                break;        case 2: printf(input list2\n);             input(L2);             break;        case 3:merge(L1,L2,L3);            break;        case 4:output(L3);        }     }while(sel!0);     return 0; } 2、顺序表两个表合成一个新表并排序 #include stdio.h #include stdlib.h #define DataType int      //此处假设顺序表的元素基类型为int #define MAXSIZE 50        //此处假设顺序表的最大元素个数为50 typedef struct List {   DataType data[MAXSIZE]; //用一维数组存储顺序表元素   int size;                //线性表的长度  }SeqList; void InitList(SeqList *p)//顺序表的初始化  {      p-size0; }  int  Locate(SeqList *p, DataType e) {     int i0;     while(ip-sizep-data[i]!e)     {        i;     }     if(ip-size)        return 0;     else        return(i1); } void InsertList(SeqList *p,int i,DataType e)//插入  {     int j;     if(i1||ip-size1)         printf(插入位置不正确);     else     {            p-size;         for(jp-size-1;ji;j--)//此处的size已是修改后的新值            p-data[j]p-data[j-1];            p-data[i-1]e;     } } void  DeleteList(SeqList *p,int i) //其实删除的是下标i-1的元素 {      int j ;      if (i1|| ip-size)      printf( 删除位置不正确);        else      {         for(ji-1;jp-size-1;j)        p-data[j]p-data[j1];        p-size--;      } } void Display(SeqList *p)//输出顺序表  {      int j;    if(p-size0)         printf(表为空表\n);    else       for(j0;jp-size;j)         printf(%d ,p-data[j]); } void Bubble(SeqList *p)//升序冒泡  {     int i,j;     int t;     for(i0;ip-size-1;i)       for(ji1;jp-size;j)          if(p-data[j]p-data[i])         {         tp-data[i];         p-data[i]p-data[j];         p-data[j]t;         }  } void Bubbles(SeqList *p)//降序冒泡  {     int i,j;     int t;     for(i0;ip-size-1;i)       for(ji1;jp-size;j)          if(p-data[j]p-data[i])         {         tp-data[i];         p-data[i]p-data[j];         p-data[j]t;         }  } int main()  {     SeqList A{{0,2,4,6,7,9},5},B{{0,1,5,7,8},4},C;  //第一个位置不用然后花括号外面是表长      int i,j;     InitList(C);     for(i1;iA.size;i)         InsertList(C,i,A.data[i]);     for(j1;jB.size;j)         if(Locate(A,B.data[j])0)                 InsertList(C,i,B.data[j]);     Display(C);     printf(表长%d\n,C.size);     printf(\n);     printf(升序排列);     Bubble(C);     Display(C);     printf(\n降序排列);     Bubbles(C);     Display(C);                 return  0;    } 3、顺序表合成被调函数直接返回新表 #includeStdio.h typedef struct A {     int data[10];    int len; }SeqList; SeqList fun(SeqList *p1, SeqList *p2) {      int i,j;     SeqList p;     p.lenp1-lenp2-len;     for(i0,j0;ip1-len;i)       p.data[j]p1-data[i];     for(i0;ip2-len;i)       p.data[j]p2-data[i];     return p; //值带回p的空间释放 } void main() {      int i;     SeqList a{{1,2,3},3},b{{5,6,7,8,9},5},p; //p是一个实体对象有自己空间     pfun(a,b); //返回值赋值给变量p     for(i0;ip.len;i) // 正确显示了返回的合并新表的值        printf(%d ,p.data[i]); } 4、顺序表合成使用二级指针,带回新表 #include stdio.h #include stdlib.h typedef struct {     int data[10];    int len; }SeqList; void fun(SeqList *p1, SeqList *p2, SeqList **p3) {     int i,j;    *p3(SeqList*)malloc(sizeof(SeqList));    (*p3)-lenp1-lenp2-len;     for(i0,j0;ip1-len;i)        (*p3)-data[j]p1-data[i];     for(i0;ip2-len;i)       (*p3)-data[j]p2-data[i]; }  //二级指针p3中存放实参指针的地址申请的堆空间地地址 //直接写入实参指针变量p中因而返回后访问堆空间的值是正确的 int main( ) {     int i;    SeqList a{{1,2,3},3},b{{5,6,7,8,9},5},*pNULL;    fun(a,b,p);        //这里使用了指针的指针做实参    for(i0;ip-len;i) // 正确显示了返回的合并新表的值    printf(%d ,p-data[i]);    return 0; } 5、顺序表合成使用静态局部变量返回其内存地址给主调方 #includestdio.h #includestdlib.h typedef struct A {     int data[10];    int len; }SeqList; SeqList* fun(SeqList *p1,SeqList *p2) {     int i,j;    static SeqList p;    p.lenp1-lenp2-len;    for(i0,j0;ip1-len;i)        p.data[j]p1-data[i];    for(i0;ip2-len;i)        p.data[j]p2-data[i];     return p; //返回函数中静态局部变量申请的空间地址 } void main() {     int i;    SeqList a{{1,2,3},3},b{{5,6,7,8,9},5},*p;    pfun(a,b); //将返回地址赋值给主调方的指针变量    for(i0;ip-len;i) // 正确显示结果       printf(%d ,p-data[i]); } //静态申请的空间释放 6、顺序表合成被调函数返回顺序表指针带回新表地址 #includestdio.h #includestdlib.h typedef struct A {     int data[10];    int len; }SeqList;   SeqList* fun(SeqList *p1,SeqList *p2) {    int i,j;   SeqList *p;   p(SeqList*)malloc(sizeof(SeqList));   p-lenp1-lenp2-len;   for(i0,j0;ip1-len;i)      p-data[j]p1-data[i];   for(i0;ip2-len;i)      p-data[j]p2-data[i];   return p; //带回指针变量的值指针变量p的空间释放 } int main() {     int i;    SeqList a{{1,2,3},3},b{{5,6,7,8,9},5},*p;    pfun(a,b); //返回的地址给了指针变量p    for(i0;ip-len;i) // 正确显示了返回的合并新表的值       printf(%d ,p-data[i]);    return 0; } 7、堆排序 #includestdio.h #define MAXSIZE 100  typedef struct {     int key; }DataType; typedef struct {     DataType list[MAXSIZE];     int length; }SeqList; void HeapAdjust(SeqList *L,int low,int high)  {      int i, j;     ilow;      j2*i;      L-list[0]L-list[i];      for(;jhigh;j*2)      {       if(jhighL-list[j].keyL-list[j1].key)        j;      if(L-list[0].keyL-list[j].key)         break;       else       {         L-list[i]L-list[j];        ij;       }     }     L-list[i]L-list[0];  } void HeapCreate(SeqList *L)  {     int i, n;    nL-length;    for(in/2;i0;i--)    HeapAdjust(L,i,n); } void HeapSort(SeqList *L) {      int i, nL-length;     HeapCreate(L);     for(in;i1;i--)     {        L-list[0]L-list[1];       L-list[1]L-list[i];        L-list[i] L-list[0];       HeapAdjust(L,1,i-1);     } } int main() {     SeqList L{{0,18,27,10,8,18,38,4,17,21},10};     HeapCreate(L);     HeapSort(L);     int i;     for(i1;i10;i)     {         printf(%d ,L.list[i].key);     }      return 0;     }  8、快速排序 #includestdio.h #define MAXSIZE 100 typedef struct {     int key; }DataType; typedef struct {     DataType list[MAXSIZE];     int length; }SeqList; int QuickPass(SeqList *L,int low,int high)  {     int i,j;    ilow;    jhigh;     L-list[0]L-list[i];    while(i!j)    {       while((L-list[j].keyL-list[0].key)(ij))       j--;      if(ij)     {         L-list[i]L-list[j];         i;      }     while((L-list[i].keyL-list[0].key)(ij))        i;     if(ij)      {        L-list[j]L-list[i];        j--;      }    }    L-list[i]L-list[0];     return i; } void QuickSort(SeqList *L,int s,int t)  {     int i;    if(st)    {     iQuickPass(L,s,t);     QuickSort(L,s,i-1);     QuickSort(L,i1,t);    } } int main() {     //SeqList L{{0,38,20,46,38,74,91,25,12},9};     SeqList L{{0,18,27,10,8,19,38,4,17,21},10};     QuickSort(L,1,10);     int i;     for(i1;i10;i)     {         printf(%d ,L.list[i].key);     }     return 0;     }  9、直接插入排序 void  ins_sort(int R[ ],int *nint x) {       int i;     R[0]x;             i*n;                    while( R[0]R[i])     {          R[i1]R[i];                  i--;     }                      R[i1]R[0];        (*n); } 10.写出用直接插入排序进行升序排序的算法 void  ins_sortdatatype R[ ],int n     {  int i;         for( i2;in;i)           { R[0]R[i];                    ji-1;                           while( R[0].keyR[j].key )              { R[j1]R[j] ;                          j- -;     }                             R[j1]R[0] ;               }       } 10、//给定一组整型值-1作为结束写出二叉排序树的生成过程。     void insert(BiTree t, Bstree * s)   //将s插入到t为根的二叉排序树中     {       if(s-datat-data)     {       if (t-lchildNULL)         t-lchilds;         else              insert(t-lchild,s);     }     else     {       if (t-rchildNULL)         t-rchilds;         else             insert(t-rchild,s);         }     }     Bstree* bstreecreate() /*二叉排序树的生成算法*/     {          int x;        Bstree *s,*t;        tNULL;        printf(input the elements of bstree,end flag is -1\n);        scanf(%d,x);        while(x!-1)             {          s(BiTNode*)malloc(sizeof(BiTNode));             s-datax;             s-lchilds-rchildNULL;             if (tNULL)                ts;             else                 insert(t,s);             scanf(%d,x);          }       return (t);     } 11、哈希查找#include stdio.h #include stdlib.h #define NULLKEY 0 #define DELKEY -1 typedef struct  {     int key; }Haxi; int Hash(int k) {      int i;     ik%97;     return i; } int InsertHash(Haxi ht[],int m,int k) {     int h0,hi,di;     h0Hash(k);     hih0;     di1;     while(ht[hi].key!NULLKEYht[hi].key!DELKEYht[hi].key!kdim)     {         hi(h0di)%m;         di;     }     if(ht[hi].key!kdim)     {         ht[hi].keyk;         return 1;     }     else     {         if(ht[hi].keyk)           printf(元素%d已经存在\n,k);         else         printf(哈希表已满\n);         return 0;       } } void CreateHash(Haxi ht[],int m) {     int endflag-99999;     int i,x;     for(i0;im;i)     {         ht[i].keyNULLKEY;     }     printf(请输入哈希表中各个元素的值以endflag-99999结束\n);     scanf(%d,x);     while(x!endflag)     {         InsertHash(ht,m,x);         scanf(%d,x);     } } int SearchHash(Haxi ht[],int m,int k) {     int h0,hi,di;     h0Hash(k);     hih0;     di1;     while(ht[hi].key!NULLKEYht[hi].key!kdim)     {         hi(h0di)%m;         di;     }     if(ht[hi].keyk)         return hi;     else         return -1; } int DeleteHash(Haxi ht[],int m,int k) {     int i;     iSearchHash(ht,m,k);     if(i!-1)     {         ht[i].keyDELKEY;         return 1;     }     else     return 0; } int main() { //测试数据:62 30 18 45 21 78 66 32 54 48 -99999     Haxi ht[100];     int i,j;     int huanhang0;     CreateHash(ht,100);     int number;     int q;     do     {         printf(请输入你想进行的操作:\n1.查看哈希表\n2.查找哈希表中的元素\n3.删除哈希表中的元素\n0.退出\n);         scanf(%d,q);         switch(q)         {             case 1:    printf(下面是建立的哈希表\n\n);                     for(i0;i99;i)                     {                     printf(%d    ,ht[i].key);                     huanhang;                      if(huanhang%100)                          {                            printf(\n);                       }                     }                     break;             case 2: printf(请输入你想查找的元素:\n);                     scanf(%d,number);                     jSearchHash(ht,100,number);                     if(j-1)                     {                         printf(查找失败该元素不存在!\n\n);                     }else                     printf(元素%d在第%d个位置上,number,j);                       break;             case 3: printf(请输入你想删除的元素:);                     int delnumber;                     int sign;                     scanf(%d,delnumber);                     signDeleteHash(ht,100,delnumber);                     if(sign1)                     {                         printf(删除成功该元素所在位置置为0\n);                     }else                     printf(查找失败该元素不存在\n);                     break;         }     }while(q);     return 0; } 11、v单链表操作 #include  stdio.h #include stdlib.h #define N 0 typedef struct {     int sno;     char name[20];     }DataType; typedef  struct   Node {   DataType  data;     struct Node *next; }LNode,*LinkList; LNode * InitL( )//初始化从无到有 {  LNode  *headNULL;     head(LNode*)malloc(sizeof(LNode));     if(head!NULL)                head-nextNULL;       return  head; } LNode* CreatLinkH (LNode  *head, int n) {   LNode  *s;     DataType   x;     int k0;     while(kn)     {   scanf(%d%s,x.sno,x.name);         s(LNode*)malloc(sizeof(LNode));  /*为新结点s申请空间*/         s-datax;                 /*给新结点的数据域赋值*/                             s-nexthead-next;/*将新结点链到首元结点之前*/        head-nexts;          /*将新结点链到头结点之后*/         k;      }     return head; } void display(LNode  *head)//显示带头结点的单链表的所有信息 {    LNode  *p;     phead-next;//P指向了第一个数据结点     while(p!NULL)//说明 p指向了一个实际的数据结点     {    printf(%5d%10s\n,p-data.sno,p-data.name);//输出该结点的值         pp-next;//p下移到下一个结点     }     printf(\n); } /* LNode * SearchL(LNode *head,  DataType  x)//返回找到结点的地址 {   LNode  *p;       phead-next;                      //从第一个结点开始找      while(p!NULL p-data!x )     //逐个往后查找      {      pp-next;}       return   p; } */ LNode * Search_i(LNode *head, int i)//返回第i个结点的直接前驱结点 {   LNode  *p;     int k0;     phead;                      //从第一个结点开始找      while(p ki-1 )     //逐个往后查找      {   k;   pp-next;      }     if(pNULL||i1)         return NULL;     return   p; } void Insert_i(LNode *head, int i) {     LNode *p,*s;     pSearch_i(head, i);     if(p)     {    s(LNode*)malloc(sizeof(LNode));  /*为新结点s申请空间*/         scanf(%d%s,s-data.sno,s-data.name);                                                       s-nextp-next;         p-nexts;       } } void DeleteL_i(LNode *head, int i) {     LNode *p,*s;     pSearch_i(head, i);     if(pNULL)         printf(查无此值\n);     else       if(p-next!NULL)       {             sp-next;         p-nexts-next;         free(s);         }         } LNode * SearchL_2(LNode *head,  DataType  x)//返回找到结点的位置号 {   LNode  *p;     phead-next;                      //从第一个结点开始找      while(p!NULL p-data.sno!x.sno )     //逐个往后查找      {   pp-next;}     return  p;      } int  count_len(LNode *head)//返回找到结点的位置号 {   LNode  *p;     int n0;      phead-next;                      //从第一个结点开始找      while(p!NULL  )     //逐个往后查找      { n;  pp-next;}     return  n;      } int main() {    LNode  *headNULL,*p;     DataType  x;     int i;     headInitL();     headCreatLinkH(head,N);//头插法建立链表     display(head); //    scanf(%d,x.sno); //    pSearch_i(head, i); /*    if(pNULL)         printf(查无此值\n);     else         if(phead)             printf(是头结点\n);         else             printf(%5d%10s\n,p-data.sno,p-data.name);     Insert_i(head,i);     display(head); DeleteL_i(head,i);     display(head);     pSearchL_2(head, x);     if(p)         printf(%5d%10s\n,p-data.sno,p-data.name);     else         printf(查无此值\n);     */     printf(长度%d\n,count_len(head));     return 0; } 12双向链表 #include stdio.h #include stdlib.h #include string.h typedef struct {      int sno;     char sex[3];     char name[20]; }DataType;  typedef struct DNode {     DataType data;     struct DNode *prior,*next; }DNode,*DuLinklist; void CrtlinkR(DNode **head,int n)/*创建长度为n的双向链表*/ {     int i;     DNode *p,*rear;     *head(DNode *)malloc(sizeof(DNode));     rear*head;     (*head)-priorNULL;     printf(input data:\n);     for(i1;in;i)     {         p(DNode*)malloc(sizeof(DNode));         scanf(%d%s%s,p-data.sno,p-data.sex,p-data.name);         rear-nextp;         p-priorrear;         rearp;     }     rear-nextNULL; } void serch_i_2(DNode *head,int i) {     DNode *p,*s,*t;     int k0;     phead;     while(pki)     {         k;pp-next;     }     if(i3||pNULL||p-priorNULL||p-prior-priorNULL)         printf(向前无第2个结点\n);     else     {         sp-prior-prior;         printf(%5d %5s %10s\n,s-data.sno,s-data.sex,s-data.name);     }     if(pNULL||p-nextNULL||p-next-nextNULL)         printf(向后无第2个结点\n);     else     {         tp-next-next;         printf(%5d %5s %10s\n,t-data.sno,t-data.sex,t-data.name);     } } void dispheady(DNode *head) {     DNode *p;     phead;     while(p-next!NULL)     {          printf(%5d %5s %10s\n,p-next-data.sno,p-next-data.sex,p-next-data.name);          pp-next;     }     printf(\n);      } /* int dLinkdel(DuLinklist L,int i) {     DNode *p,*s;     int j;     pL;     j0;     while(p!NULLji)     {         pp-next;         j;          }     if(j!i||i1)     {         printf(删除位置不正确\n);         return 0;     }     sp ;            printf(p-data%d\n,p-data);          p-prior-nextp-next;     if(p-next!NULL)     p-next-priorp-prior;          free(s); return 1; } */   void fun(DNode *head,DNode **M,DNode **F)   {         DNode *p,*rf,*rm,*s;         CrtlinkR(M,0);         CrtlinkR(F,0);         rf*F;         rm*M;         phead-next;         while(p)         {             if(strcmp(p-data.sex,男)0)             {                 s(DNode *)malloc(sizeof(DNode));                 s-datap-data;                 s-priorrf;                 s-nextrf-next;                 rf-nexts;                 rfs;                 }             else             {                 s(DNode *)malloc(sizeof(DNode));                 s-datap-data;                 s-priorrm;                 s-nextrm-next;                 rm-nexts;                 rms;             }             pp-next;         }   } void fun_2(DNode *head,DNode **M,DNode **F)//拆男生和女生   {         DNode *p,*rf,*rm,*s;         CrtlinkR(M,0);         *Fhead;         rf*F;         rm*M;         phead-next;         while(p)         {             if(strcmp(p-data.sex,男)0)             {                 sp;                 pp-next;                 s-nextrf-next;                 rf-nexts;                 rfs;                     }             else             {                 sp;                 pp-next;                 s-nextrm-next;                 rm-nexts;                 rms;             }                 }         rf-nextNULL;         rm-nextNULL;   } int  main() {     DNode *head,*Mhead,*Fhead;     int i,k;     CrtlinkR(head,5);  /*新建一个长度为5的双向链表*/     dispheady(head);    /*显示双向链表*/     /*     ilocate(head,2);  //查找数据4所在位置     printf(%d\n,i);     kdLinkdel(head,i);//删除第i个数据          if(k1)    //删除成功则显示插入后双向链表     {         printf(已正确删除了第%d个结点\n,i);         dispheady(head);     }     else         printf(位置不正确不能删除\n);     scanf(%d,i);     serch_i_2(head,i);*/         fun_2(head,Mhead,Fhead);         dispheady(Mhead);         dispheady(Fhead);         dispheady(head);     return 0; } 13树 //1. 设计一算法统计二叉树中度为2的结点总数。 int count(Bstree* bt) {       if(btNULL)      return 0;              if(bt-lchild!NULLbt-rchild!NULL)          return 1;              else         return(count(bt-lchild)count(bt-rchild));   } //3. 设计一算法统计叶子结点总数。 int countleaf1(Bstree* bt) {       if(btNULL)          return 0;              if(bt-lchildNULL bt-rchildNULL)          return 1;             else         return(countleaf1(bt-lchild)countleaf1(bt-rchild));     } //写出在二叉排序树中进行查找的算法。 BiTNode* SearchData(BiTree t, KeyType kx) /*在二叉排序树t上查找关键码为kx的元素,找到返回其所在及结点的指针否则返回一个空指针 */ {     BiTNode* qt;         while(q)         {         if(kxq-data.key)             qq-rchild;  /* 在右子树中查找 */              else if (kxq-data.key)                      qq-lchild; /* 在左子树中查找 */                  else return q;   /* 查找成功 */         }        return  NULL;    /* 查找不成功 */ } 中序遍历 typedef struct node {     int  data;     struct node *lchild,*rchild; }Bstree;      void bianli(Bstree* bt) {       if (bt!NULL)     {           bianli(bt-rchild);         printf(%5d,,bt-data);          bianli(bt-lchild);     }       } 二叉树判断完全二叉树源代码typedef struct  {     char data[10];     int front;     int rear; }SeqQueue; /* void initqueue(SeqQueue *q) {     q-frontq-rear0; } int enqueue(SeqQueue *q,char x) {     if(q-rear10)     {        printf(队满\n);     }     else     {         q-data[q-rear]x;         q-rear;         return 1;     }     return 0; } int dequeue(SeqQueue *q,char *x) {     if(q-frontq-rear)     {         printf(队空);         return 0;     }     else     {         *xq-data[q-front];         q-front;         return 1;     }      } /* void complete(BiTree root) {     SeqQueue p;     BiTree qroot;     initqueue(p);     if(q!NULL)     {         enqueue(amp;p,*q);         while(p.frontlt;p.rear)         {             dequeue(amp;p,q);             printf(%c,q);             if(q-lchild!NULL)             enqueue(amp;p,*(q-lchild));             if(q-rchild!NULL)             enqueue(amp;p,*(q-rchild));         }     } } */ /*  bool Judge_Complete(BiTree T)//判断二叉树是否是完全二叉树 { BiTree t; SeqQueue Q;     //创建一个空队列 initqueue(Q); enqueue(Q,T); //将T的头结点入队 t T;         //给t赋初值T根节点 if(TNULL) return false; while(QueueLength(Q)) { if(t-lchildNULL t-rchild!NULL) return false; if(t-lchild!NULL t-rchild!NULL)//左右孩子都不为空 { dequeue(Q,t);//删除该双亲节点 enqueue(Q,t-lchild); //将左孩子入队 enqueue(Q,t-rchild); //将右孩子入队 } if((t-lchild!NULL t-rchildNULL) || (t-lchildNULL t-rchildNULL)) { dequeue(Q,t); //从刚才判断的节点的下一个节点一次判断剩下队列中的节点是否左右子树都为空 while(QueueLength(Q)) { if(t-lchildNULL t-rchildNULL) dequeue(Q,t); else return false; } return true; } } return true; } */ 在顺序表中进行二分查找的递归算法int BSearch(S_TBL *tbl,keytype kxint low,int high) //在下界为low上界为high的线性表tbl中折半查找关键字为k的元素 {   int  mid(lowhigh)/2;     if(lowhigh) return -1;         if(ktbl-data[mid].key) return mid;     if(k tbl-data[mid].key) return(BSearch(tbl,k,low,mid-1));     return(BSearch(tbl,k,mid1,high)); } 折半查找 #includestdio.h #define MAXSIZE 100 #define KeyType int typedef struct STUDENTS {     char name[10];      int grade;     }stu; typedef struct   {      stu data[MAXSIZE1];      int length; }SeqList; int Binsearch(SeqList *L,KeyType x) {      int low,mid,high;     low1;      highL-length;     while(lowhigh)     {        mid(lowhigh)/2;       if(L-data[mid].gradex)       return mid;       else           if(L-data[mid].gradex)           lowmid1;           else           highmid-1;     }     return 0; } int main() {     SeqList m{                {                {,0},                {张三,60},                {李四,70},                {王五,80},                {老六,90}},                 4};     int searchgrade;     int location;     printf(请输入你想要查找的成绩:\n);     scanf(%d,searchgrade);     locationBinsearch(m,searchgrade);     if(location!0)     {     printf(%s,m.data[location].name);     }     else{     printf(查无此人);         }     return 0;          } 有两个链表表示的集合设计算法判断是否相等源代码 // 判断两个链表表示的集合是否相等 int Equal(LinkList h1,LinkList h2) { LNode *p,*q;  int t10,t20;   ph1-next; qh2-next;   while(p) //h1中所有元素是否都在h2  { if(locateLinkList(h2,p-data)) pp-next;  else return 0;  }  if(pNULL) t11;  while(q) //h2中所有元素是否都在h1  { if(locateLinkList(h1,q-data))  qq-next;  else return 0 ;  }  if(qNULL) t21;  if(t11t21) return 1 ;  else return 0; } // // 判断两个有序链表表示的集合是否相等 int Equal(LinkList h1,LinkList h2) { LNode *p,*q;  ph1-next;qh2-next;  while(pq) //等长且对应元素一一相等  { if(p-data!q-data)  return 0;  pp-next;qq-next;  }  if(p||q) return 0;  return 1; }  //设计一算法利用单链表中原来的结点将该单链表中元素倒置。即原来的元素如果为12345倒置后变成54321。  void reverse (NodeType * H) {       NodeType *p;      pH- next;     H-nextNULL;     while(p)     {        qp;      pp-next;     q-nextH-next;     H-nextq;        } } 10. 设计一算法求该链表中值最大的结点并返回该结点的指针若链表为空则返回一个 空指针。     NodeType* maxpNodeType* L)     {  NodeType* pL-next,*s;        if(p!NULL)     {   sp;  //第一个结点初始化为最大的结点             pp-next;  //从第二个开始比较             while(p!NULL)             {   if(p-datas-data)  sp;  //s指向当前最大的结点                 pp-next;     }     return s            else        return  NULL     } 3. 设计一算法删除单链表中重复的结点。     void pur_LinkList(NodeType * H)     { NodeType *p,*q,*r;                              pH-next;           if (pNULL) return           while(p-next)           {  qp; //找与p重复的结点并删除              while(q-next)                if (q-next-datap-data)                       { rq-next;  q-nextr-next; free( r ); }                else q q -next;              pp-next;             }
http://www.w-s-a.com/news/963054/

相关文章:

  • 手机微网站怎么制作的网上找设计师
  • 网站建设包括哪些方面学校网站 建设
  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司
  • 衡水做网站推广的公司wordpress相册滑动
  • 不用域名也可以做网站公司网站建设制作难么
  • 学做网站培训机构wordpress 图片拉伸
  • 成都捕鱼网站建设wordpress自定义文章类别
  • wordpress网站怎么加速湖北网站建设企业
  • 迁安做网站中的cms开发南平网站建设公司
  • 肥西县住房和城乡建设局网站代驾系统定制开发
  • 网站建设明细报价表 服务器qq是哪家公司的产品
  • html链接网站模板wordpress怎么调用简码
  • 网站域名怎么查简述网站推广的五要素
  • 咸宁网站设计公司app安装下载
  • 丝网外贸做哪些网站最优的赣州网站建设
  • 如何做网站不被查网站开发工程师岗位说明书
  • 做网站需要vps吗网站建设后怎样发信息