正文

练习:顺序表的所有操作2006-05-31 02:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bclz/15236.html

分享到:

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

阅读(3311) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册