/*
实验一
文件名:SeqList.cpp
该程序参考网上的一个实验要求编写,用于实验线形表的各种操作
在VC6.0中模拟C环境运行
作者:hanshuyujifen
日期:2006.05.29
*/
#include <cstdio>
#include <iostream>
using namespace std;
/* 定义DataType为int类型 */
typedef int DataType;
/*顺序表存储空间的总分配量*/
#define MAXSIZE 100
/* 顺序存储类型 */
typedef struct
{
DataType data[MAXSIZE]; /*存放线性表的数组*/
int length; /* length是顺序表的长度*/
}SeqList;
/* 初始化顺序表 */
SeqList SeqListInit()
{
SeqList L;
L.length=0;
return L;
}
/* 清空顺序表 */
SeqList ListClear(SeqList L)
{
L.length=0;
return L;
}
/* 求顺序表长度 */
int ListLength(SeqList L)
{
return(L.length);
}
/* 检查顺序表是否为空 */
int ListEmpty(SeqList L)
{
if(L.length==0)return 1;
else return 0;
}
/*检查顺序表是否为满 */
int ListFull(SeqList L)
{
if(L.length==MAXSIZE)
return 1;
else return 0;
}
/* 遍历顺序表 */
void ListTraverse(SeqList L)
{
int i;
if(L.length<=0)
printf("表空");
else{
printf("当前顺序表中的元素为:\n");
for(i=1;i<L.length+1;i++)
printf("%d ",L.data[i-1]);
printf("\n");
}
}
/* 从顺序表中查找第i个元素 */
DataType ListGet(SeqList L ,int i)
{
return(L.data[i-1]);
}
/* 从顺序表中查找与给定元素值相同的元素在顺序表中的位置 */
int ListLocate(SeqList L, DataType x)
{
int i=0;
while(i<L.length&&L.data[i-1]!=x)
i++;
if(i<L.length)return(i+1);
else return 0;
}
/* 向顺序表中插入元素 */
SeqList ListInsert(SeqList L,int i,DataType x)
{
int j=0;
if(L.length==MAXSIZE)
printf("表满,不能插入\n");
else if(i<1||i>(L.length+1))
printf("插入位置不正确\n");
else{
for(j=L.length-1;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=x;
L.length++;
}
return L;
}
/* 从顺序表中删除元素 */
SeqList ListDelete(SeqList L,int i)
{
int j=0;
if(i<=0||i>L.length)
printf("删除位置不正确\n");
else{
for(j=i;j<=L.length;j++)
L.data[j-1]=L.data[j];
}
printf("第%d个元素已被删除\n",i);
L.length--;
return L;
}
/*求顺序表中元素的前驱*/
DataType ListPrior (SeqList L,DataType e)
{//找到元素e,并返回其前一个元素
int i=0;
while(i<L.length&&L.data[i]!=e)
i++;
if(i<L.length-1)
return L.data[i-1];
else if(i==0)
{
printf("第一个元素,没有前驱\n");
return 0;
}
else
{
printf("没有找到值为%d的元素",e);
return 0;
}
}
/*求顺序表中元素的后继*/
DataType ListNext(SeqList L,DataType e)
{//找到元素e,并返回其后一个元素
int i=0;
while(i<L.length&&L.data[i]!=e)
i++;
if(i==L.length-1)
{
printf("最后一个元素,没有后继\n");
return 0;
}
else if(i<L.length-1)
{
return(L.data[i]);
}
else
{
printf("没有找到值为%d的元素\n",e);
return 0;
}
}
void main()
{
int i;
SeqList L;
L=SeqListInit();
printf("%d\n",ListLength(L));
for(i=0;i<MAXSIZE;i++)
{
L=ListInsert(L,i+1,MAXSIZE-i);
printf("%d ",L.length);
}
printf("\n");
ListTraverse(L);
printf("%d\n",ListLength(L));
L=ListClear(L);
printf("%d\n",ListLength(L));
}
正文
练习:顺序表的所有操作2006-05-31 02:55:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/bclz/15236.html
阅读(3172) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论