实验1 顺序表的操作及其应用
一、实验目的
1)掌握线性表的顺序存储结构;
2)熟练掌握顺序表基本算法的实现;
3)掌握利用线性表数据结构解决实际问题的方法和基本技巧;
4)按照实验题目要求独立正确地完成实验内容
二、实验内容
要求:数据元素类型ElemType 取整型int 或者char。顺序存储实现如下算法:
1)创建一顺序表;
2)输出该顺序表;
3)在顺序表中查第i 个元素,并返回其值;
4)在顺序表中第i 个元素之前插入一已知元素;
5)在顺序表中删除第i 个元素;
6)实现顺序表的合并。(选做)
源程序:
//A Sequential List顺序表
#include <stdio.h>
#include <malloc.h>
#include <process.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define InitSize 100 //线性表存储空间的初始分配量
#define ListIncrement 10 //线性表存储空间的分配增量
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
Status InitList(SqList &L) //初始化
{
L.elem=(ElemType *)malloc(InitSize*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
L.length=0;
L.listsize=InitSize;
return OK;
}
//求表长
int ListLength(SqList &L)
{
return L.length;
}
//输入元素
int DataInput(SqList &L)
{
int i=1,j=1;
printf("输入数据后,按“0”结束输入\n");
while(j)
{
scanf("%d",&j);
if(j!=0)
{
L.elem[i]=j;
L.length++;
i++;
if(i>InitSize)
break;
}
}
return FALSE;
}
//输出顺序表
Status ListTraverse(SqList L)
{
ElemType *p;
int i;
p=L.elem;
for(i=0;i<L.length;i++)
printf("%d ",*p++);
printf("\n");
return OK;
}
//查元素
Status GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
exit(ERROR);
e=L.elem[i-1];
return OK;
}
//插入元素
Status ListInsert(SqList &L,int i,ElemType e)
{
ElemType *newbase,*q,*p;
if(i<1||i>L.length+1)
return ERROR;
if(L.length>=L.listsize)
{
newbase=(ElemType *) realloc(L.elem,(L.listsize+ListIncrement)*sizeof(ElemType));
if(!newbase)
exit(OVERFLOW);
L.elem=newbase;
L.listsize=L.listsize+ListIncrement;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;c语言指针实验总结
}
//删除元素
Status ListDeletSq(SqList &L,int i,ElemType &e)
{
ElemType *p,*q;
if(i<1||i>L.length)
return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
return OK;
}
//主函数
int main()
{
SqList L;
ElemType e;
char ch;
int t;
while(1)
{
system("cls");
printf("\t------------MENU------------------\n");
printf("\t|1.创建一顺序表 |\n");
printf("\t|2.输入数据 |\n");
printf("\t|3.输出顺序表 |\n");
printf("\t|4.查表中元素 |\n");
printf("\t|5.于表中插入元素 |\n");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论