“ 忠诚、笃学、严谨、守纪 ”

点击任意处进入

数据结构作业1

`
#include <stdio.h>
#include <stdlib.h>

typedef int DataType;
typedef struct SeqList
{
    int MAXNUM;
    DataType *elemennt;
    int n;
}SeqList;
typedef struct SeqList *List;

//0.创建一个空顺序表
List newList(int m){
    List list = (List)malloc(sizeof(struct SeqList));
    if (list == NULL)
    {
        printf("顺序表结构体内存分配失败");
        return NULL;
    }

    list->elemennt = (DataType *)malloc(sizeof(DataType) * m);
    if (list->elemennt == NULL)
    {
        printf("数组内存分配失败");
        return NULL;
    }

    list->n = 0;
    list->MAXNUM = m;

    return list;
}

//1.判断是否为空列表
int isNullList(List list){
    return(list->n == 0);
}

//2.查找第一个值为x的元素的下标
int locate_x(List list,DataType x){
    for (int i = 0; i < list->n; i++)
    {
        if (list->elemennt == x)
        {
            return i;
        }
    
    }
    return -1;
}

//3.在下标为p的元素之前,插入一个值为x的元素
int insetPre_x(List list,int p,DataType x){
    if (list->n == list->MAXNUM){
        printf("空间不足");
        return -1;
    }
    for (int i = list->n-1; i >=p ; i--)
    {
        list->elemennt[i+1] = list->elemennt[i];
        list->elemennt[p] = x;
    }
}

//4.在下标为p的元素之后,插入一个值为x的元素
int insetPost_x(List list,int p,DataType x){
    if (list->n == list->MAXNUM){
        printf("空间不足");
        return -1;
    }
    for (int i = list->n-1; i > p ; i--)
    {
        list->elemennt[i+1] = list->elemennt[i];
        list->elemennt[p+1] = x;
    }
}
//5.删除下标为p的元素
int delete_p(List list,int p){
    for (int i = p; i < list->n-1; i++)
    {
        list->elemennt[i] = list->elemennt[i+1] ;
    }

}
//6.删除顺序表中第一个值为x的元素
int delete_x(List list,DataType x){
    int p;
    p = locate_x(list,x);
    if (p == -1)
    {
        printf("要删除的元素不存在!");
        return 0;
    }

    delete_p(list,p);
    return 1;
}

`

posted @ 2026-04-13 15:09  alonep  阅读(34)  评论(0)    收藏  举报