数据结构-顺序表(个人笔记)

mianxi 发布于 8 天前 33 次阅读


#include <stdio.h>
#define MAXSIZE 100
typedef int ElemType;

//定义顺序表
typedef struct 
{
	ElemType data[MAXSIZE];
	int length;
}SeqList; 

//初始化顺序表
void initList (SeqList *L)
{
	L -> length = 0;
} 

//在尾部添加元素
int appendElem(SeqList *L,ElemType e)
{
    if (L->length>=MAXSIZE)
    {
        printf("顺序表已满");
        return 0;
    }
    L->data[L->length] = e;
    L->length++;
    return 1;
}

//遍历元素
void printElem(SeqList *L)
{
    for (int i = 0;L->length > i;i++)
    {
        printf("%d ",L->data[i]);
    }
    printf("\n");
}

//插入元素
int insElem(SeqList *L,ElemType e,int place)
{
    if (L->length>=MAXSIZE)
    {
        printf("顺序表已满");
        return 0;
    }
    if (place < 1||place > L->length)
    {
        printf("插入位置错误\n");
        return 0;
    }
    
    //从后向前移动函数
    if(place <= L->length)
    {
        for (int i = L->length-1; i >= place-1; i--)
        {
            L->data[i+1]=L->data[i]; 
        }
        L->data[place-1]=e;
            //更新长度
        L->length++;
            
    }
    return 1;
}

//删除元素
int DelElem(SeqList *L,int place,ElemType *e)
{
    if(place < 1 || place > L->length )
    {
        printf("超过删除范围\n");
        return 0;
    }
    *e = L->data[place-1];
    if (place<L->length)
    {   
        for(int i = place;i < L->length;i++)
        {
            L->data[i-1] = L->data[i];
        }
    }
    //方便查看删除的数据
    L -> length--;
    return 1;
}

//查找元素
int findElem(SeqList *L,int place,ElemType *e)
{
    if(place < 1 || place > L->length )
    {
        printf("超过查找范围\n");
        return 0;
    }
    for (int i =0;i < L->length;i++)
    {
        if(L->data[i] == e)
        {
            return i + 1;
        }
    }
}

//动态分配内存地址初始化
//typedef struct 
//{
//   ElemType *data;
//    int length;
//}SeqList;
//SeqList* initList(SeqList *L)
//{
//    SeqList *L = (SeqList*)malloc(sizeof(SeqList));
//    L->data = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
//    L->length = 0;
//    return L;
//}

int main()
{
 	SeqList list;
 	initList(&list);
 	printf("初始化成功,目前长度占用%d\n",list.length);
 	printf("目前占用内存%zu字节\n",sizeof(list.data));
 	appendElem(&list, 88);
    appendElem(&list, 95);
    appendElem(&list, 10);
    appendElem(&list, 81);
    appendElem(&list, 23);
    printElem (&list);
    insElem(&list,6,2);
    printElem (&list);
    ElemType Deldata;
    DelElem(&list,2,&Deldata);
    printf("被删除的数据为:%d\n",Deldata);
    printElem(&list);
 	return 0;
} 
此作者没有提供个人介绍。
最后更新于 2025-06-26