线性表

来源:互联网 发布:身份证号的js验证 编辑:程序博客网 时间:2024/05/16 11:20
# include <stdio.h># include <malloc.h># include <stdlib.h># define N  100typedef  int ElenType;typedef  struct{    ElenType  date[N];    int length;} SqList;SqList * CreteList(SqList * q,ElenType a[], int len);//创建表 SqList * initList(SqList *);//初始化void destroyList();//销毁线性表int ListEmpty(SqList *q);//判断线性表是否为空int ListLength(SqList *q);//返回线性表的长度void dispList(SqList *q);//便利输出void getList(SqList *q,int i,ElenType &e);//获取第i个元素的值,获取值保存在e中int locateElem(SqList *q,ElenType e);   //在线性表中查找与e相等的元素,返回序数,不存在返回0;SqList * listInsert(SqList * q,int i, ElenType e);//插入第i个元素的前面SqList *  listDelete(SqList * q,int i, ElenType e); //删除第i个元素int main(){    SqList * p;    ElenType  a[6]={1,34,56,35,55,77};    int s,t,t1;    p=CreteList(p,a,6);    //p=initList(p);         //destroyList(&p);//不对    //ListEmpty(p);      //ListLength(p);//   dispList(p);//获取此值    //getList(p,3,t);//用t来     //printf("%d  \n",t);     // s=locateElem(p,55);     //printf("%d",s);    //listInsert(p,3,36);    //dispList(p);//获取此值    listDelete(p,3,t1);    dispList(p);//获取此值    return 0;}SqList * CreteList(SqList *q, ElenType a[],int len){     q = (SqList *)malloc(sizeof(SqList));     for(int i=0;i<len;i++)         q->date[i]=a[i];     q->length=len;       return q;}/*void CreateList(SqList *&L,ElemType a[],int n)相当于void CreateList((SqList *)(&L),ElemType a[],int n)  相当于&L=p,即L引用p前面的SqList只是类型//建立顺序表{    int i;    L=(SqList *)malloc(sizeof(SqList));    for (i=0;i<n;i++)        L->data[i]=a[i];    L->length=n;}*/SqList *  initList(SqList *q){   q=(SqList *)malloc(sizeof(SqList));   q->length=0;   return q;}/*void InitList(SqList *&L)//初始化{    L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间    L->length=0;}*//*void destroyList(SqList **q){   ferr(*q);}*/int ListEmpty(SqList * q){    return (q->length==0);}int ListLength(SqList * q){     return (q->length);}void dispList(SqList * q){    for(int i=0;i<q->length;i++)    printf("%d  ",q->date[i]);}void getList(SqList * q,int i,ElenType &e){    if(i<1||i>q->length)    {        printf("输入错误,没有此元素\n");         exit(-1);    }    e=q->date[i-1];}/*int GetElem(SqList *L,int i, &e){    if (i<1 || i>L->length)        return 0;    e=L->data[i-1];    return 1;}*/int locateElem(SqList * q,ElenType e){    for(int i=0;i<q->length;i++)         if(q->date[i]==e)             return i+1;             return 0;}/*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;}*/SqList * listInsert(SqList *q,int i,ElenType e){    if(i<1||i>q->length)    {        printf("元素的位置错误!");exit(-1);    }    else        for(int j=q->length;j>=i;j--)            q->date[j]=q->date[j-1];        q->date[i-1]=e;        q->length++;        return q;}/*int ListInsert(SqList *&L,int i,ElemType e){    int j;    if (i<1 || i>L->length+1)        return 0;    i--;                        //将顺序表位序转化为elem下标    for (j=L->length;j>i;j--)   //将data[i]及后面元素后移一个位置        L->data[j]=L->data[j-1];    L->data[i]=e;    L->length++;                //顺序表长度增1    return 1;*/    SqList * listDelete(SqList * q,int i,ElenType e)    {        if(i<1||i>q->date[q->length-1])        {            printf("输入错误!\n");           exit(-1);        }        else        {            e = q->date[i-1];            for(int j=i;j<q->length;j++)                q->date[j-1]=q->date[j];            q->length--;        }        return q;    }    /*int ListDelete(SqList *&L,int i,ElemType &e){    int j;    if (i<1 || i>L->length)        return 0;    i--;                        //将顺序表位序转化为elem下标    e=L->data[i];    for (j=i;j<L->length-1;j++) //将data[i]之后的元素前移一个位置        L->data[j]=L->data[j+1];    L->length--;                //顺序表长度减1    return 1;}    */
0 0
原创粉丝点击