第三周项目三—求集合并集

来源:互联网 发布:java spring mvc 框架 编辑:程序博客网 时间:2024/05/16 11:56

Copyright (c) 2015,烟台大学计算机学院

All rights reserved,

文件名称:idea.cpp

作者:王阳

完成日期:2015年9月18日

liat.h

01.#define MaxSize 50   02.typedef int ElemType;  03.typedef struct  04.{  05.    ElemType data[MaxSize];  06.    int length;  07.} SqList;  08.void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表   09.void InitList(SqList *&L);//初始化线性表InitList(L)   10.void DestroyList(SqList *&L);//销毁线性表DestroyList(L)   11.bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)   12.int ListLength(SqList *L);//求线性表的长度ListLength(L)   13.void DispList(SqList *L);//输出线性表DispList(L)   14.bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)   15.int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)   16.bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)   17.bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED  #define MaxSize 50typedef int ElemType;typedef struct{    ElemType data[MaxSize];    int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表void InitList(SqList *&L);//初始化线性表InitList(L)void DestroyList(SqList *&L);//销毁线性表DestroyList(L)bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)int ListLength(SqList *L);//求线性表的长度ListLength(L)void DispList(SqList *L);//输出线性表DispList(L)bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED

list.cpp
01.#include <stdio.h>   02.#include <malloc.h>   03.#include "list.h"   04.  05.//用数组创建线性表   06.void CreateList(SqList *&L, ElemType a[], int n)  07.{  08.    int i;  09.    L=(SqList *)malloc(sizeof(SqList));  10.    for (i=0; i<n; i++)  11.        L->data[i]=a[i];  12.    L->length=n;  13.}  14.  15.//初始化线性表InitList(L)   16.void InitList(SqList *&L)   //引用型指针   17.{  18.    L=(SqList *)malloc(sizeof(SqList));  19.    //分配存放线性表的空间   20.    L->length=0;  21.}  22.  23.//销毁线性表DestroyList(L)   24.void DestroyList(SqList *&L)  25.{  26.    free(L);  27.}  28.  29.//判定是否为空表ListEmpty(L)   30.bool ListEmpty(SqList *L)  31.{  32.    return(L->length==0);  33.}  34.  35.//求线性表的长度ListLength(L)   36.int ListLength(SqList *L)  37.{  38.    return(L->length);  39.}  40.  41.//输出线性表DispList(L)   42.void DispList(SqList *L)  43.{  44.    int i;  45.    if (ListEmpty(L)) return;  46.    for (i=0; i<L->length; i++)  47.        printf("%d ",L->data[i]);  48.    printf("\n");  49.}  50.  51.//求某个数据元素值GetElem(L,i,e)   52.bool GetElem(SqList *L,int i,ElemType &e)  53.{  54.    if (i<1 || i>L->length)  return false;  55.    e=L->data[i-1];  56.    return true;  57.}  58.  59.//按元素值查找LocateElem(L,e)   60.int LocateElem(SqList *L, ElemType e)  61.{  62.    int i=0;  63.    while (i<L->length && L->data[i]!=e) i++;  64.    if (i>=L->length)  return 0;  65.    else  return i+1;  66.}  67.  68.//插入数据元素ListInsert(L,i,e)   69.bool ListInsert(SqList *&L,int i,ElemType e)  70.{  71.    int j;  72.    if (i<1 || i>L->length+1)  73.        return false;   //参数错误时返回false   74.    i--;            //将顺序表逻辑序号转化为物理序号   75.    for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置   76.        L->data[j]=L->data[j-1];  77.    L->data[i]=e;           //插入元素e   78.    L->length++;            //顺序表长度增1   79.    return true;            //成功插入返回true   80.}  81.  82.//删除数据元素ListDelete(L,i,e)   83.bool ListDelete(SqList *&L,int i,ElemType &e)  84.{  85.    int j;  86.    if (i<1 || i>L->length)  //参数错误时返回false   87.        return false;  88.    i--;        //将顺序表逻辑序号转化为物理序号   89.    e=L->data[i];  90.    for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移   91.        L->data[j]=L->data[j+1];  92.    L->length--;              //顺序表长度减1   93.    return true;              //成功删除返回true   94.}  

main.cpp
[cpp] view plaincopyprint?01.#include "list.h"   02.#include <stdio.h>   03.  04.void unionList(SqList *LA, SqList *LB, SqList *&LC)  05.{  06.    int lena,i;  07.    ElemType e;  08.    InitList(LC);  09.    for (i=1; i<=ListLength(LA); i++) //将LA的所有元素插入到Lc中   10.    {  11.        GetElem(LA,i,e);  12.        ListInsert(LC,i,e);  13.    }  14.    lena=ListLength(LA);         //求线性表LA的长度   15.    for (i=1; i<=ListLength(LB); i++)  16.    {  17.        GetElem(LB,i,e);         //取LB中第i个数据元素赋给e   18.        if (!LocateElem(LA,e)) //LA中不存在和e相同者,插入到LC中   19.            ListInsert(LC,++lena,e);  20.    }  21.}  22.  23.//用main写测试代码   24.int main()  25.{  26.    SqList *sq_a, *sq_b, *sq_c;  27.    ElemType a[6]= {5,8,7,2,4,9};  28.    CreateList(sq_a, a, 6);  29.    printf("LA: ");  30.    DispList(sq_a);  31.  32.    ElemType b[6]= {2,3,8,6,0};  33.    CreateList(sq_b, b, 5);  34.    printf("LB: ");  35.    DispList(sq_b);  36.    unionList(sq_a, sq_b, sq_c);  37.    printf("LC: ");  38.    DispList(sq_c);  39.    return 0;  40.}  

0 0
原创粉丝点击