搜档网
当前位置:搜档网 › 数据结构实现顺序表的各种基本运算(20210215233821)

数据结构实现顺序表的各种基本运算(20210215233821)

数据结构实现顺序表的各种基本运算(20210215233821)
数据结构实现顺序表的各种基本运算(20210215233821)

实现顺序表的各种基本运算

一、实验目的

了解顺序表的结构特点及有关概念,掌握顺序表的各种基本操作算法思想及其实现。

二、实验内容

编写一个程序,实现顺序表的各种基本运算:

1、初始化顺序表;

2 、顺序表的插入;

3、顺序表的输出;

4 、求顺序表的长度

5 、判断顺序表是否为空;

6 、输出顺序表的第i位置的个元素;

7 、在顺序表中查找一个给定元素在表中的位置;

8、顺序表的删除;

9 、释放顺序表

三、算法思想与算法描述简图

主函数main

四、实验步骤与算法实现

#in clude

#in clude #defi ne MaxSize 50 typedef char ElemType; typedef struct

{ElemType data[MaxSize]; in t le ngth;

void In itList(SqList*&L)〃

初始化顺序表 L

{L=(SqList*)malloc(sizeof(SqList)); L->le ngth=0;

for(i=0;ile ngth;i++) prin tf("%c ",L->data[i]);

}

void

DestroyList(SqList*&L)〃 {free(L); }

int ListEmpty(SqList*L)〃 {retur n( L->le ngth==O); }

int Listle ngth(SqList*L)〃 {return(L->le ngth); }

void DispList(SqList*L)〃 {int i;

释放顺序表

L

prin tf("\n");

}

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

return 0;

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

return 1;

}

int LocateEmpty(SqList*L,ElemType e)/* {int

i=0;

while (ile ngth&&L->data[i]!=e)

i++;

if(i>=L->le ngth)

return 0;

else

return i+1;

}

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

if(i<1||i>L->le ngth+1)

return 0;

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

L->data[i]=e;

return 1;

} Array

int ListDelete(SqList*&L,int i,ElemType e)/* {int j;

if(i<1||i>L->le ngth)

return 0;

i--;〃将顺序表位序转化为data下标

e=L_>data[i];

for(j=i;jle ngth-1;j++)

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

L->le ngth--;

return 1;

}

void mai n()

{SqList*L;

ElemType e;

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

In itList(L);// 初始化

prin tf("(2) 依次采用尾插法插入7,9,12,13,14,15,18\n"); ListI nsert(L,1,'7');

ListI nsert(L,2,'9');

ListI nsert(L,3,'12');

ListI nsert(L,4,'13');

ListI nsert(L,5,'14');

ListI nsert(L,6,'15');

ListI nsert(L,7,'18');

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

DispList(L);

printf("(4) 顺序表L 长度=%d\n”,Listlength(L));

printf("(5) 顺序表L 为%s\n",(Listlength(L)?" 空":"非空")); GetElem(L,3,12);

printf("(6) 顺序表第3 个元素=%d\n",12);

printf("(7) 元素a 的位置=%d\n",LocateEmpty(L,'a'));

printf("(8) 在第4个数位置上插入8元素\n");

Listl nsert(L,4,8);

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

DispList(L);

printf("(10) 删除L的第3个元素\n”);

ListDelete(L,3,e);

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

DispList(L);

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

DestroyList(L);

}

五、实验测试及结果

六、思考题

按由表头至表尾和表尾至表头的次序输入数据元素,则顺序表建

立的程序设计有何区别?

解答:若是按表头至表尾次序输入,则存放的元素与顺序表中位置一一对应,而表尾至表头输入则相反。输出时,也相反!

相关主题