/*实验一文件名: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));}

评论