线性表(顺序表)

来源:互联网 发布:mac怎么显示桌面 编辑:程序博客网 时间:2024/05/01 04:34
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100///定义结构体typedef int elemtype;typedef struct{    elemtype data[MAXSIZE];    int length;}SqList;///初始化顺序表SqList *InitList(SqList *L){    L=(SqList *)malloc(sizeof(SqList));    L->length=0;    return L;}///插入元素int InsItem(SqList *L,int pos,int item){    int i;    if(pos<1||pos>L->length+1)    {        printf("Position is not correct!\n");        return 0;    }    else if(pos>=MAXSIZE)    {        printf("The list is overflow.\n");        return 0;    }    else    {        for(i=L->length-1;i>=pos-1;i--)        {            L->data[i+1]=L->data[i];        }        L->data[pos-1]=item;        L->length++;        return 1;    }}///删除元素1(根据位置)int DelItem1(SqList *L,int pos){    int i;    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    else if(pos<1||pos>L->length)    {        printf("Position is not correct!\n");    }    else    {        for(i=pos-1;i<L->length-1;i++)        {            L->data[i]=L->data[i+1];        }        L->length--;        return 1;    }}///删除操作2(根据值,只删除一个)int DelItem2(SqList *L,int item){    int i;    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    else    {        for(i=0;i<L->length;i++)        {            if(L->data[i]==item)            {                DelItem1(L,i+1);                break;            }        }        return 1;    }}///删除操作3(根据值,删除多个相同的值)int DelItem3(SqList *L,int item){    int i;    if(L->length==0)    {        printf("The list is empty!\n");    }    else    {        for(i=0;i<L->length;i++)        {            if(L->data[i]==item)            {                DelItem1(L,i+1);  //与2的区别在于少了break;            }        }        return 1;    }}///定位查找1(返回第一个位置)int LocItem1(SqList *L,int item){    int i;    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    else    {        for(i=0;i<L->length;i++)        {            if(L->data[i]==item)            {                return i+1;            }        }    }}///定位查找2(打印多个位置)int LocItem2(SqList *L,int item){    int i;    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    else    {        for(i=0;i<L->length;i++)        {            if(L->data[i]==item)            {                printf("%d ",i+1);            }        }    }}///置空顺序表int EmptyList(SqList *L){    L->length=0;    return 1;}///判空int ListEmpty(SqList *L){    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    else    {        printf("The list is no empty!\n");        return 1;    }}///逆置顺序表SqList *Inverse(SqList *L){    int i,temp;    for(i=0;i<L->length/2;i++)    {        temp=L->data[i];        L->data[i]=L->data[L->length-1-i];        L->data[L->length-1-i]=temp;    }    return L;}///顺序表排序(冒泡排序/升序)SqList *Sort(SqList *L){    ///同数组排序同理    int i,j,temp;    for(i=0;i<L->length;i++)    {        for(j=0;j<L->length;j++)        {            if(L->data[i]<L->data[j])            {                temp=L->data[i];                L->data[i]=L->data[j];                L->data[j]=temp;            }        }    }}///遍历顺序表int ListTraverse(SqList *L){    int i;    if(L->length==0)    {        printf("The list is empty!\n");        return 0;    }    for(i=0;i<L->length;i++)    {        printf("%d ",L->data[i]);    }    printf("\n");    return i;}int main(){    SqList *L;    L=(SqList *)malloc(sizeof(SqList));}
1 0
原创粉丝点击