线性表归并实验报告

时间:2024.4.30

文本框: 四、实验过程和结果:(记录实验过程和结果、以及所出现的问题和解决方法)
1.在先打开 win tc191 应用平台 
2.新建工程,创建一个文件为linklist.c ,输入代码
3.调试并运行程序!
实验的结果:
1,建表成功: 
五、实验总结和思考:(填写收获和体会,分析成功或失败的原因)

五、实验总结和思考:(填写收获和体会,分析成功或失败的原因)

收获:凡事只要经过了自己的实践,才能发现问题,后才能想办法去解决它,才能有新的收获和启发,并获取更多的知识。同时,只有多写代码才能熟悉它们,在不断的练习中去获取经验,以后遇到相关或是类似的问题才知道该怎样做或是怎样处理!

问题:容易犯格式等细节上的错误,并且调试时自己不易发现。所以,写代码是应注意细节,避免不该犯的错误

附件:(源代码)

/*

  本程序实现以下功能:

     1.从键盘输入一组整数,建立带头结点的非递增有序单向链表La;

     2.从键盘输入一组整数,建立带头结点的非递增有序单向链表Lb;

     3.建一有序链表L,将归并后的数据放于此链表中;

*/

#include "conio.h"

      #include "alloc.h"

#define LIST_INIT_SIZE 100

      #define LISTINCREMENT  10

      #define ENDFLAG  0

     

typedef int ElemType;

      typedef struct{

   

         ElemType *elem;

         int length;

         int listsize;

      }SqList;

     

void InitList(SqList *L)

      {

         L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

         if(!L->elem)

         {

             printf("\n\tOut of space.");

             getch();

         exit(-2);

         }

         L->length=0;

         L->listsize=LIST_INIT_SIZE;

      }

      void Merge (SqList La,SqList Lb,SqList *Lc)

      {

           ElemType *pa,*pb,*pc,*pa_last,*pb_last;

           pa=La.elem;

           pb=Lb.elem;

           Lc->listsize=Lc->length=La.length+Lb.length;

           pc=Lc->elem=(ElemType *)malloc(Lc->length*sizeof(ElemType));

           if(!Lc->elem)

               {

                 printf("\n\nOut of space.\n");

                 getch();

                 exit(-2);

               }

           pa_last=La.elem+La.length-1;

           pb_last=Lb.elem+Lb.length-1;

           while(pa<=pa_last&&pb<=pb_last)

               {

                    if(*pa<=*pb) *pc++=*pa++;

                    else *pc++=*pb++;

               }

           while(pa<=pa_last)  *pc++=*pa++;

           while(pb<=pb_last)  *pc++=*pb++;

       }

    

void shuru(SqList *L)

       {

            ElemType x,*newbase;

            scanf("%d",&x);

            while(x!=ENDFLAG)

               {

                   if(L->length>=L->listsize)  /* full */

                       {

                          newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));

                         if(!newbase)

                             {

                               printf("\n\tOut of space.");

                               getch();

                               exit();

                             }

        L->elem=newbase;

        L->listsize+=LISTINCREMENT;

        }

        L->elem[L->length++]=x;

            scanf("%d",&x);

      }

      }

      void main()

      {

         SqList La,Lb,Lc;

         ElemType x;

         clrscr();

         InitList(&La);

         InitList(&Lb);

         printf("\n\t\tInput the data of the list La:\n\n\t");

         shuru(&La);

         printf("\n\t\tInput the data of the list Lb:\n\n\t");

         shuru(&Lb);

         MergeList(La,Lb,&Lc);

         printf("\n\t\tThe result is as the follows:\n\n\t");

        for(x=0;x<Lc.length;x++)

         printf("%d  ",Lc.elem[x]);

        getch();

      }


第二篇:线性表实验报告


西安郵電學院

数据结构实验报告

  目:           线性表的运用                          

一.实验目的:

熟悉线性表的创建,插入,删除,查找和显示的操作

二.实验内容:

   1.题目:使用C语言程序实现线性表的创建,插入,删除,查找和显示的功能

  

2.代码和结果:

#include<stdio.h>

#include<malloc.h>

#define MaxSize 50

#define OK 1

#define ERROR 0

typedef char ElemType;

typedef struct

{

    ElemType elem[MaxSize];

    int length;

}SqList;                                              /*顺序表类型定义*/

void InitList(SqList * &L)                            /*初始化顺序表L*/

{

    L=(SqList * )malloc(sizeof(SqList));

    L->length=0;

}

int CreateList(SqList * L,int n)                      /*录入初数据*/

{

    int i;

    printf("输入%d个整数:\n",n);

    for(i=0;i<n;i++)

        scanf("\n%d",&L->elem[i]);

    return OK;

}

void DestroyList(SqList * L)                          /*释放顺序表L*/

{

    free(L);

}

int ListEmpty(SqList * L)                             /*判断顺序表L是否为空表*/

{

    return(L->length==0);

}

int ListLength(SqList * L)                            /*返回顺序表L的元素个数*/

{

    return(L->length);

}

void DispList(SqList * L)                            /*输出顺序表*/

{

    int i;

    if(ListEmpty(L))return;

    for(i=0;i<L->length;i++)

        printf("%d",L->elem[i]);

    printf("\n");

}

int GetElem(SqList * L,int i,ElemType &e)             /*获取顺序表L中第i个元素*/

{

    if(i<1||i>L->length)

        return ERROR;

    else

        e=L->elem[i-1];

        return e;

}

int LocateElem(SqList * L,ElemType e)                 /*在顺序表L中查找元素e*/

{

    int i=0;

    while(i<L->length && L->elem[i]!=e) i++;

    if(i>=L->length)

        return ERROR;

    else

        return i+1;

}

int ListInsert(SqList * &L,int i,ElemType e)          /*在顺序表L中第i个位置插入元素e*/

{

    int j;

    if(i<1||i>L->length+1)

        return 0;

    i--;

    for(j=L->length;j>i;j--)

        L->elem[j]=L->elem[j-1];

    L->elem[i]=e;

    L->length++;

    return OK;

}

int ListDelete(SqList * &L,int i,ElemType &e)         /*顺序表L中删除第i个元素*/

{

    int j;

    if(i<1||i>L->length)

        return 0;

    i--;

    e=L->elem[i];

    for(j=i;j<L->length-1;j++)

        L->elem[j]=L->elem[j+1];

    L->length--;

    return OK;

}

void main()

{

    SqList *L;

    ElemType e;

    printf("(1)初始化顺序表L\n");

    InitList(L);

    int n;

    printf("(2)请输入要录入的元素个数:");

    scanf("%d",&n);

    L->length=n;

    CreateList(L,n);

   

    printf("(3)输出顺序表:");

    DispList(L);

   

    printf("(4)请输入要查找第几号元素:");

    int a;

    scanf("%d",&a);

    printf("您所查找的元素为%d\n",GetElem(L,a,e));

   

   

    printf("(5)请输入要查找的元素:");

    scanf("%d",&e);

    printf("您所查找的元素在%d号位置\n",LocateElem(L,e));

   

    printf("(6)请输入要插入的位置和元素:\n");

    int c,d;

    scanf("%d%d",&c,&d);

    ListInsert(L,c,d);

   

    printf("(7)输出顺序表L:");

    DispList(L);

   

    printf("(8)请输入要删除L的第几号元素:\n");

    int f;

    scanf("%d",&f);

    ListDelete(L,f,e);

   

    printf("(9)输出顺序表L:");

    DispList(L);

   

    printf("(10)释放顺序表L\n");

    DestroyList(L);

}

   3.心得体会

在设计一个多功能程序的时候,可以考虑设计多个函数来分担主函数的压力,并且可以方便主函数的功能强化和使用,有利于日后对于程序的修改.

更多相关推荐:
数据结构 线性表操作实验报告

数据结构实验报告实验题目线性表的操作实验目的1掌握上机调试线性表的基本方法2掌握线性表的一些基本操作实验内容将两个有序链表合并为一个有序链表一需求分析1实验程序中先创建两个有序链表演示程序以用户和计算机的对话方...

数据结构线性表实验报告

《数据结构》实验报告院系应用科技学院专业电子信息工程姓名##学号10级电信班20##年10月11日1.实验目的1.掌握线性表的基本运算。2.掌握顺序村存储的概念,学会对顺序存储数据结构进行操作。3.加深对顺序存…

线性表的基本操作实验报告

实验一线性表的基本操作实验目的学习掌握线性表的顺序存储结构链式存储结构的设计与操作对顺序表建立插入删除的基本操作对单链表建立插入删除的基本操作算法实验内容1顺序表的实践1建立4个元素的顺序表ssqlist123...

数据结构线性表试验报告

线性表上机实习1实验目的1熟悉将算法转换为程序代码的过程2了解顺序表的逻辑结构特性熟练掌握顺序表存储结构的C语言描述方法3熟练掌握顺序表的基本运算查找插入删除等掌握顺序表的随机存取特性4了解线性表的链式存储结构...

数据结构线性表实验报告

浙江万里学院实验报告专业班级计算机111实验小组第十组实验日期20xx921

线性表实验报告

数据结构实验报告实习题名线性表的基本运算以及多项式的算术运算班级B120xx3姓名陈何渊学号B120xx318日期20xx107顺序表的基本运算一问题描述实现单链表的定义和基本操作实现顺序表的逆置删除表中所有元...

线性表实验报告

福州大学数计学院数据结构上机实验报告验内容名称

实验报告1_线性表及表达式

实验报告(学年第学期)课程名称数据结构A实验名称实验一线性表的基本运算及多项式的算术运算实验时间实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实验报告实…

实验报告 线性表的顺序存储

实验报告试验项目名称线性表的顺序存储所属课程名称实验类型试验日期学院数学与信息科学学院专业信息与计算科学班级082班姓名李晓璐学号0801214037实验线性表的顺序存储结构上的操作一实验目的1掌握用上机调试线...

线性表——数据结构实验报告

实验报告题目编制一个演示集合的并交和差运算的程序班级姓名学号完成日期年月日一需求分析1集合的元素限定为小写字母字符az集合输入的形式为一个以回车键为标志的字符串串中字符顺序不限不允许出现重复字符输出的运算结果字...

数据结构实验报告三线性表的链式存储

实验报告三线性表的链式存储班级20xxXXX姓名HoogLe学号20xxXXXX专业XXXX2858505197qqcom一实验目的1掌握单链表的基本操作的实现方法2掌握循环单链表的基本操作实现3掌握两有序链表...

1数据结构-实验报告一(线性表的基本操作)

数据结构实验报告实验内容实验一线性表的基本操作及其应用专业信息与计算科学班级学号姓名蒋丰沛指导教师刘长松20xx年4月22日实验基本格式一实验目的二实验内容和要求三源代码四测试结果五心得体会实验一线性表的基本操...

线性表实验报告(37篇)