• 合并两个顺序表


    2.分别创建两个有序的顺序表(每个表的元素个数以及每个元素的值在运行时由键盘输入),
    现将两个有序表合并,并保证新表依然为有序的顺序表。

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #define  MAXSIZE  100 
      4 typedef int DataType;
      5 
      6 typedef  struct  node 
      7 {   
      8     DataType  data[MAXSIZE];
      9      int  length;
     10 } SeqList,*PSeqList;
     11 
     12 PSeqList  Init_SeqList(void);
     13 PSeqList Input_Seqlist(PSeqList A,int *pn);
     14 PSeqList merge_SeqList (PSeqList A,  PSeqList  B,  PSeqList  C);
     15 Print_SeqList(PSeqList PL);
     16 
     17 
     18 
     19 main()
     20 {
     21     int n;
     22     PSeqList Pa,Pb,Pc;
     23     Pa=Init_SeqList();
     24     Pb=Init_SeqList();
     25     Pc=Init_SeqList();
     26     Pa=Input_Seqlist(Pa,&n);
     27     //Print_SeqList(Pa);
     28     Pb=Input_Seqlist(Pb,&n);
     29     //Print_SeqList(Pb);
     30     Pc=merge_SeqList (Pa,Pb,Pc);
     31     Print_SeqList(Pc);
     32 
     33 }
     34 
     35 PSeqList  Init_SeqList(void)
     36 {  /*创建一顺序表,入口参数无,返回一个指向顺序表的指针,指针值为零表示分配空间失败*/
     37    PSeqList  PL;
     38    PL=( PSeqList )malloc(sizeof(SeqList)); 
     39    if (PL)       /*若PL=0表示分配失败*/
     40         PL->length=0;     
     41    return (PL);
     42 } 
     43 
     44 PSeqList Input_Seqlist(PSeqList A,int *pn)
     45 {
     46     int i;
     47     printf("请输入整型数据个数:");
     48     scanf("%d",pn);
     49     printf("请输入%d个整型数据,中间用,号隔开",*pn);
     50     for(i=0;i<*pn;i++)
     51     {
     52         scanf("%d",&A->data[i]);
     53         A->length++;
     54     }
     55     return(A);
     56 
     57 }
     58 
     59 PSeqList merge_SeqList (PSeqList A,  PSeqList  B,  PSeqList  C)
     60 {    int  i,j,k;
     61       i=0;j=0;k=0;
     62       if (A->length+B->length>MAXSIZE) 
     63           {  
     64           printf("C表空间不足");      
     65           return(0);   
     66       }
     67      while ( i<A->length && j<B->length )
     68      {
     69            if (A->data[i]<B->data[j])     
     70                C->data[k++]=A->data[i++];
     71            else     
     72                C-> data[k++]=B->data[j++]; 
     73     }
     74      while (i<A->length )       
     75          C->data[k++]= A->data[i++];
     76      while (j<B->length )       
     77          C->data[k++]= B->data[j ++];
     78       C->length=k;
     79       return(C); 
     80 }   
     81 
     82 int Print_SeqList(PSeqList PL)
     83 {
     84     int i;
     85     if(!PL)
     86     {
     87         printf("无此顺序表");
     88         return -1;
     89     }
     90     if(PL->length==0)
     91     {
     92         printf("空表");
     93         return 0;
     94     }
     95 
     96     printf("顺序表的长度为%d",PL->length);
     97     printf("顺序表的各元素值为:");
     98     for(i=0;i<=PL->length-1;i++)
     99         printf("%4d",PL->data[i]);
    100     return 1;
    101 
    102 }
  • 相关阅读:
    Service Cloud 零基础(五)Trailhead学习 Embedded Chat
    Community Cloud零基础学习(五)Topic(主题)管理
    Service Cloud 零基础(四)快速配置一个问卷调查(无开发)
    salesforce零基础学习(一百)Mobile Device Tracking
    mysql 设置查询超时配置
    YIi2 Object 报错问题
    php 如何创建uuid
    mysql8 安装后无法登录的问题
    nano编辑器保存退出
    在使用openbms的时候发现的Thinkphp action 大小写问题
  • 原文地址:https://www.cnblogs.com/panxinqi/p/6586732.html
Copyright © 2020-2023  润新知