线性表~顺序结构(数组)

#include<stdio.h>
#define Maxsize 1024


typedef struct
{
    int data[Maxsize];
    int last;
} sqlist,*list;


void creatList(list L)                 //创建链表
{
    int x,i=0;
    printf("请输入第%d个元素:",i+1);
    scanf("%d",&x);
    while(x!=-1&&i<Maxsize)
    {
        L->data[i]=x;
        L->last=i;
        i++;
        printf("请输入第%d个元素:",i+1);
        scanf("%d",&x);
    }
}


void printList(list L)               //打印链表
{
    int i;
    for(i=0; i<lengthList(L); i++)
        printf("%d ",L->data[i]);
    printf("\n");
}


void clearList(list L)               //置空链表
{
    L->last=-1;
}


int getList(list L,int i)            //取表元素
{
    return L->data[i-1];
}


int lengthList(list L)               //求链表长度
{
    return L->last+1;
}


int locateList(list L,int x)         //定位链表元素
{
    int i,flag=0;
    for(i=0; i<lengthList(L); i++)
    {
        if(x==L->data[i])
        {
            printf("您需要查询的元素在第%d个\n",i+1);
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        printf("您需要查找的元素不存在!!!\n");
        return NULL;
    }
    else
        return i+1;
}


list insertList(list L,int x,int i)   //插入元素
{
    int j;
    if(i<1||i>lengthList(L)+1)
    {
        printf("输入有误!!!\n");
        return L;
    }
    for(j=L->last; j>=i-1; j--)
    {
        L->data[j+1]=L->data[j];
    }
    L->data[i-1]=x;
    ++L->last;
    return L;
}


list deleteList(list L,int x)         //删除链表元素
{
    int i,j,flag=0;
    for(i=0; i<lengthList(L); i++)
    {
        if(L->data[i]==x)
        {
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        printf("不存在此元素!!!\n");
        return L;
    }
    else
    {
        for(j=i; j<L->last; j++)
            L->data[j]=L->data[j+1];
    }
    --L->last;
    return L;
}
int main()
{
    void creatList(list L);           //创建链表
    void printList(list L);           //打印链表
    int locateList(list L,int x);     //定位链表元素
    list insertList(list L,int x,int i);  //插入元素
    list deleteList(list L,int x);         //删除元素


    list p,n;
    int x,i;
    p=(list)malloc(sizeof(sqlist));
    creatList(p);
    printList(p);
    printf("请输入您需要查找的值:");
    scanf("%d",&x);
    n=locateList(p,x);
    printf("请输入您需要插入元素的值和位置:");
    scanf("%d %d",&x,&i);
    p=insertList(p,x,i);
    printList(p);
    printf("请输入您需要删除元素的值:");
    scanf("%d",&x);
    p=deleteList(p,x);
    printList(p);


    return 0;
}

猜你喜欢

转载自blog.csdn.net/mycsdn_xm/article/details/80712732