视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据结构顺序表实验报告
2025-09-24 08:27:14 责编:小OO
文档
洛阳理工学院实验报告

系别计算机班级学号姓名
课程名称数据结构实验日期10/23
实验名称顺序表的基本操作成绩
实验目的:

熟悉掌握线性表顺序存储结构,掌握与应用顺序表的查找、插入、删除等基本操作算法,训练和提高结构化程序设计能力及程序调试能力。

实验条件:

计算机一台,Visual C++6.0

实验内容:

1.问题描述

以顺序表为存储结构实现以下基本操作:

(1)在第i个元素前插入一个新元素。

(2)查找值为x的某个元素。若成功,给出x在表中的位置;不成功给出提示信息。

(3)删除第i个元素,若成功,给出提示信息并显示被删元素的值;不成功给出失败的提示信息。

2.数据结构类型定义

typedef  struct

{     ElemType elem[MAXSIZE];  

    Int last;    

}SeqList;

3.模块划分

(1)创建顺序表输入函数:void Input(SeqList *L,int n);

(2)创建顺序表输出函数:void Output(SeqList *L);

(3)创建顺序表的内容查找函数:int Locate(SeqList L,ElemType e); 

(4)创建顺序表的插入函数:int  InsList(SeqList *L,int i,ElemType e);

(5)创建顺序表的删除函数: int  DelList(SeqList *L,int i,ElemType *e);

(6)主函数:void main()   

4.详细设计

#include

#include

#include

#define OK   1

#define ERROR  -1

#define TRUE 1

#define FALSE 0

#define ElemType int

#define    MAXSIZE  100  //最大长度 

typedef  struct

{     ElemType  elem[MAXSIZE];  

       int    last;    

}SeqList;

void Input(SeqList *L,int n) //输入函数

{   int i;

    printf("请输入线性表的各元素值:\\n");

for(i=0; i scanf("%d",&L->elem[i]);    

}

void Output(SeqList *L)    //输出函数

{  int i;

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

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

  printf("\\n");

}

int Locate(SeqList L,ElemType e)//内容查找函数

{     int i;

    i=0;

while((i<=L.last)&&(L.elem[i])!=e)

     i++;

if(i<=L.last)

     return(i+1);    //返回序号

     else

    return(-1);

}

int  InsList(SeqList *L,int i,ElemType e)//插入数据

{     int k;

       if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/

    {    printf("插入位置不合法\\n");

        return(ERROR);

    }

if(L->last>= MAXSIZE-1)

    {    printf("表已满无法插入");

        return(ERROR);

    }

    for(k=L->last;k>=i-1;k--)      //为插入元素而移动位置

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

L->elem[i-1]=e; //第i个元素的下标为i-1

L->last++;

    return(OK);

}

int  DelList(SeqList *L,int i,ElemType *e)  //删除函数

/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */    

{     int k;

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

    {     printf("删除位置不合法!\\n");        

        return(ERROR);

    }

*e = L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/

for(k=i; k<=L->last; k++)

L->elem[k-1] = L->elem[k]; /*将后面的元素依次前移*/

    L->last--;        

    return(TRUE);    

}

void main()//主函数

{SeqList l,*la;    

    int p,q,r,k,j ,m,num;    

    printf("请输入线性表的长度:");

    scanf("%d",&r);

    l.last = r-1;

 la=&l; 

Input(la,la->last+1);

 Output(la);

 //按内容查找元素

    printf("请输入要查找的元素值:\\n");

    scanf("%d",&q);

    p=Locate(l,q);   

    if(p == -1)

    printf("在此线性表中没有该元素! \\n");

    else

    printf("该元素在线性表中的位置为:%d \\n",p);      

 //插入元素 (在i处插入元素e)    

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

    scanf("%d",&k);

    printf("请输入要插入的元素值:\\n"); 

    scanf("%d",&j);

    InsList(la,k,j);   //调用插入函数    

    Output(la);

    //删除元素  删除第i个元素    

    printf("请输入需要删除的元素的位置:\\n");

    scanf("%d",&m);        

 DelList(la,m,&num);    

    printf("删除成功,删除的元素为%d",num);

    printf("\\n");

 Output(la);      

}

5.测试数据及结果

实验总结:

经过调试与测试,实验结果与测试预期一致。顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

下载本文
显示全文
专题