• 关于线性表的一些简单应用


    关于线性表的基本操作见http://www.cnblogs.com/zydark/p/7778131.html

    利用线性表LA和LB分别表示两个集合A和B,现在要求一个新的集合,新集合为A与B的并集
    要求扩大线性表A,将存在于B中不在A中的元素插入到表A中去。

     1 #include "seqlist.h"
     2 int main1(void)
     3 {
     4     seqlist LA, LB;
     5     InitList(&LA);
     6     InitList(&LB);
     7     int a []= { 1,3,5,7 };
     8     int b[] = { 1,2,3,4 };
     9     int LA_len, LB_len;
    10     for (int i = 1; i <= 4; i++)
    11     ListInsert(&LA, i, a[i-1]);
    12     for (int j = 1; j <= 4; j++)
    13     ListInsert(&LB, j, b[j-1]);
    14     LA_len = ListLength(LA);
    15     LB_len = ListLength(LB);
    16     Datatype e;
    17     for (int k = 1; k <= LB_len; k++)
    18     {
    19         Getelem(LB, k-1, &e);//依次取出LB中的元素
    20         if (Locateelem(LA, e)==-1) //Lb中的元素和LA不相等则插入
    21     
    22             ListInsert(&LA, ++LA_len, e);
    23     }
    24 
    25 
    26     for (int num = 1; num <=LA.length; num++)
    27         printf("%d
    ", LA.data[num-1]);
    28     getchar();
    29     return 0;
    30 }

    已知线性表LA和LB中的数据元素按值递减有序排列,要求将LA和LB归并为一个新的线性表LC
    且LC中的数据元素仍按值非递减有序排列
    设LA=(3,5,8,11)
    LB=(2,6,8,9,11,15,20)
    LC=(2,3,5,6,8,8,9,11,11,15,20)

    用m和n分别对应表A与表B分别取两个表中的数据在第一次while后,长度较短的链表A
    中的值已经全部插入到LC中,后两个while循坏使所有数据全部插入。

     
    1
    int main2() 2 { 3 seqlist LA, LB,LC; 4 InitList(&LA); 5 InitList(&LB); 6 InitList(&LC); 7 int i, j, m=0, n=0,k=0; 8 int p[] = { 3,5,8,11 }; 9 int q[] = { 2,6,8,9,11,15,20 }; 10 int LA_len, LB_len; 11 for ( i = 1; i <= 4; i++) 12 ListInsert(&LA, i, p[i - 1]); 13 for (j = 1; j <= 7; j++) 14 ListInsert(&LB, j, q[j - 1]); 15 LA_len = ListLength(LA); 16 LB_len = ListLength(LB); 17 Datatype a,b; 18 while (m < LA_len&&n < LB_len) 19 { 20 Getelem(LA, m , &a); 21 Getelem(LB, n, &b); 22 if (a <= b) 23 { 24 ListInsert(&LC, ++k, a); 25 m++; 26 } 27 else 28 { 29 ListInsert(&LC, ++k, b); 30 n++; 31 } 32 33 } 34 while (m < LA_len) 35 { 36 Getelem(LA, m++, &a); 37 ListInsert(&LC, ++k, a); 38 } 39 while (n < LB_len) 40 { 41 Getelem(LB, n++, &b); 42 ListInsert(&LC, ++k, b); 43 } 44 for (int l = 0; l < LA_len + LB_len; l++) 45 { 46 printf("%d ",LC.data[l]); 47 } 48 49 getchar(); 50 return 0; 51 }
  • 相关阅读:
    对国内技术社区
    github访问慢
    MVC 框架搭建
    EntityFramework与Ado.net的对比——EF优势何在?
    什么是DTO ,DTO 有什么作用
    一些有趣的资源推荐
    解决sublime text 3使用Install Package时出现There are no packages available for installation问题
    基于CentOS7的服务器搭建(LAMP环境)
    Windows下UEFI环境的搭建
    Ubuntu16.04下搜狗输入法、Sublime Text 3的安装
  • 原文地址:https://www.cnblogs.com/zydark/p/7778784.html
Copyright © 2020-2023  润新知