您的位置:首页 > 其它

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

2016-07-01 13:58 627 查看
/*
*Copyright (c) 2016, 烟台大学计算机学院
*All rights reserved.
*文件名称:main.cpp
*作者:张旺华
*完成日期: 2016 年 7 月 1 日
*版本号:v1.0
*问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)
*
*/

#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef char ElemType;
#define Maxsize 50
typedef struct
{
ElemType data[Maxsize];
int length;
}SqList;
void InitList(SqList *&L)  //初始化线性表
{
L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间
L->length=0;                        //置空线性表长度为0
}
void DestroyList(SqList *L)  //销毁线性表
{
free(L);
}
bool ListEmpty(SqList *L) //判断线性表是否为空
{
return (L->length==0);
}
int ListLength(SqList *L) //求线性表的长度
{
return (L->length);
}
void DispList(SqList *L) //输出线性表
{
int i;
if(L->length==0) return;
for(i=0;i<L->length;i++)
printf("%c ",L->data[i]);
printf("\n");
}
bool GetElem(SqList *L,int i,ElemType &e)  //求线性表中某个元数的值
{
if(i<1||i>L->length)
return false;
e=L->data[i];
return true;
}
int LocateElem (SqList *L,ElemType e)  //按元素值查找
{
int i=0;
while(i<L->length&&L->data[i]!=e)
i++;
if(i>=L->length)
return 0;
else
return i+1 ;
}
bool ListInsert(SqList *L,int i,ElemType e)  //插入数据元素
{
int j;
if(i<1||i>L->length)
return false;
i--;
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *L,int i,ElemType e)
{
//int j;
if(i<1||i>L->length)
return false;
i--;
e=L->data[i];
for(;i<L->length-1;i++)
{
L->data[i]=L->data[i+1];
}
L->length--;
return true;
}
int main()
{
SqList *h;
ElemType e;
cout<<"顺序表的基本运算如下:"<<endl;
cout<<"(1)初始化顺序表h:"<<endl;
InitList(h);
cout<<"(2)依此采用尾插法插入a,b,c,d,e元素:"<<endl;
ListInsert(h,1,'a');
ListInsert(h,2,'b');
ListInsert(h,3,'c');
ListInsert(h,4,'d');
ListInsert(h,5,'e');
cout<<"(3)输出顺序表h:"<<endl;
DispList(h);
cout<<"(4)顺序表h长度为:"<<ListLength(h)<<endl;
printf("(5)顺序表h为%s\n",(ListEmpty(h)?"空":"非空"));
GetElem(h,3,e);
cout<<"(6)顺序表h的第3个元素是:"<<e<<endl;
cout<<"(7)元素a的位置:"<<LocateElem(h,'a')<<endl;
cout<<"(8)在第四个元素位置上插入f元素:"<<endl;
ListInsert(h,4,'f');
cout<<"(9)输出顺序表h:"<<endl;
DispList(h);
cout<<"(10)删除h的第3个元素:"<<endl;
ListDelete(h,3,e);
cout<<"(11)输出顺序表h:"<<endl;
DispList(h);
cout<<"(12)释放顺序表h:"<<endl;
DestroyList(h);
}

运行结果:



学习心得:数据结构实践操作第一题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: