Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75563
  • 博文数量: 33
  • 博客积分: 1422
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 21:11
个人简介

学无止境

文章存档

2011年(13)

2010年(20)

我的朋友

分类: 嵌入式

2010-09-08 18:23:15

 《数据结构》中的算法2.1实现
Algo2_1.c

#include "include.h"
#include "List.h"
#include "Algo2_1.h"







Status equal(ElemType c1,ElemType c2)
{//判断c1和c2是否相等,相等返回TURE,否则返回FASLE

    if(c1==c2)
        return TRUE;
    else
        return FALSE;
}

//----------------------------------------------------------

void Union(SqList *La,SqList Lb)
{//将所有在Lb中不在La中元素插入La中

    ElemType e;
    int La_len,Lb_len;
    int i;
    La_len=ListLength(*La);//求表的长度

    Lb_len=ListLength(Lb);
    for(i=1;i<=Lb_len;i++)
    {
        GetElem(Lb,i,&e);//取第i个元素赋给e

        if(!LocateElem(*La,e,equal)) // La中不存在和e相同的元素,则插入之

            ListInsert(La,++La_len,e);
    }
}


Algo2_1.h


#include "status.h"



/******************************************************************
            函数声明
******************************************************************/

Status equal(ElemType c1,ElemType c2);// 判断两个数是否相等

void Union(SqList *La,SqList Lb);


main.c

/******************************************************************
                       主函数
******************************************************************/
#include "include.h"
#include "List.h"
#include "Algo2_1.h"


Status visit(ElemType *e)
{
    printf("%d ",*e);
    printf("\n");
    return OK;
}

void main()
{
    SqList La,Lb;
    int i;
    int result;//函数的返回状态值
    //------------------初始化La和Lb-----------------------
    printf("初始化顺序表\n");
    La=InitList();
    Lb=InitList();
    printf("初始化后的结果:\n");
    printf("La.elem=%u La.length=%d La.listsize=%d\n\n",La.elem,La.length,La.listsize);
    printf("Lb.elem=%u Lb.length=%d Lb.listsize=%d\n\n",Lb.elem,La.length,Lb.listsize);
    //-----------------------------------------------------
    //------------------初始化La和Lb-----------------------
    printf("在表La头依次插入1--5\n");
    for(i=1;i<=5;i++)
        result=ListInsert(&La,1,i);
    printf("La.elem=%u La.length=%d La.listsize=%d\n\n",La.elem,La.length,La.listsize);
    printf("插入的内容为:\n");
    for(i=1;i<=5;i++)
        printf("%d ",*(La.elem+i-1));

    printf("\n在表Lb头依次插入1--10\n");
    for(i=1;i<=10;i++)
        result=ListInsert(&Lb,1,i);
    printf("Lb.elem=%u Lb.length=%d Lb.listsize=%d\n\n",Lb.elem,Lb.length,Lb.listsize);
    printf("插入的内容为:\n");
    for(i=1;i<=10;i++)
        printf("%d ",*(Lb.elem+i-1));
    //--------------算法2.1测试---合并顺序表---------------
    Union(&La,Lb);
    printf("\nLa合并后的内容:\n");
    result=ListTraverse(La,visit);
    //-----------------------------------------------------

}


list.h和list.c不变
阅读(968) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~