实验名称 顺序表的基本操作
一、实验目的:
1、复习C语言程序设计中的知识。
2、掌握线性表的顺序存储结构的表示和实现方法。
3、掌握顺序表基本操作的算法实现。
二、实验内容:
1.建立顺序表。
2.在顺序表上实现插入、删除和查找等操作。
三、实验要求:
编写实现顺序表的基本算法(初始化、查找、插入、删除等)的函数,并在此基础上设计一个主程序完成如下功能:
⑴初始化字符型顺序表L;
⑵建立顺序表L,如(a,b,c,d,c);
⑶输出顺序表L的长度;
⑷输出顺序表L的第i个元素,如第3个元素;
⑸输出给定元素的位置,如输出元素a的位置;
⑹在第i个元素前插入给定元素,如在第4个元素前插入元素f;
⑺删除顺序表L的第i个元素,如删除顺序表L的第3个元素。
四、实验步骤:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 1024
typedef int elemtype;
typedef struct sequlist
{
elemtype data[maxsize]; //定义顺序表为一维数组
int last; //last为最后一个数据元素的下标位置
}SequenList;
//1 初始化字符型顺序表L
SequenList * lnit_SequenList()
{
SequenList *L;
L = (SequenList
*)malloc(sizeof(SequenList));/申请分配内存空间/
if (L != NULL) /申请分配内存空间成功/
{
L->last = -1; /*顺序表为空*/
printf("初始化成功!\n");
}
return L; //返回顺序表的首地址
}
/*2 建立顺序表L */
SequenList *indata_SeqList(SequenList *L)
{
elemtype x;
scanf("%d", &x);
while (x != 0)
{
L->last += 1;
L->data[L->last] = x;
scanf("%d", &x);
}
printf(“顺序表建立成功!\n”);
return L;
}
/3 输出顺序表L的长度/
int SequenList_Length(SequenList *L)
{
return (L->last + 1);
}
/* 4 输出顺序表L的第i个元素*/
int input_SequenList(SequenList *L, elemtype key)
{
int i;
for (i = 0; i <= L->last;
i++)
{
if (i + 1 == key)
{
printf("顺序表L的第i个元素为:%d\n", L->data[i]);
//printf("%d",
L->data[i]);
//return L->data[i];
}
}
if (key<=0 || key>(L->last))
{
printf("查找失败");
}
printf(“顺序表的所有元素为:\n”);
Print_SequenList(L);
return 0;
}
/* 5 输出给定元素的位置 */
int Search_SequenList(SequenList *L, elemtype pos)
{
int i;
for (i = 0; i <= L->last;
i++)
{
if (L->data[i] == pos)
{
printf("给定元素的位置为%d:\n", i + 1);
//return (i +1);
}
// if
(pos!=L->data[i] && i = L->last)
//{
// printf(“查找失败”);
// }
}
Print_SequenList(L);
/* i–;
if (i = L->last
&&(i+1)!=pos)
{
p