顺序表删除销毁操作
本文分享如何删除顺序表最后一个元素,第一个元素,以及销毁表
#include"stdio.h"
#include "malloc.h"
#define SEQLIST_INIT_SIZE 10
#include<stdlib.h>
typedef int ElemType;
typedef struct SeqList
{
ElemType *base;
int capacity;
int size;
}SeqList;
//初始化一个顺序表
void IntialList(SeqList *list)
{
list->base=(ElemType *)malloc((sizeof(ElemType)*SEQLIST_INIT_SIZE));
list->capacity=SEQLIST_INIT_SIZE;
list->size=0;
}
//给顺序表赋0-10随机数
void textList(SeqList*List)
{
for(int i=0;i<SEQLIST_INIT_SIZE;i++)
{
List->base[i]=rand()%11;
List->size++;
}
}
//显示顺序表
void show_list(SeqList*List )
{
for (int i = 0; i <List->size;i++)
{
printf("%d ", List->base[i]); //从第一个元素开始显示
}
printf("\n");
}
//从后面删除一个元素
void pop_back(SeqList * List)
{
if (List->size ==0)
{
printf("顺序表为空,不能删除数据\n");
return;
}
List->size--;
}
//从前面删除一个元素
void pop_front(SeqList *List)
{
if (List->size == 0)
{
printf("顺序表为空,不能删除数据\n");
return;
}
//将第一个值覆盖
for (int i = 0; i < List->size-1;i++)
{
List->base[i] = List->base[i + 1];
}
List->size--;
}
int length(SeqList *List)
{
printf("表的长度%d",List->size);
return List->size;
}
void destroy(SeqList* List)
{
free(List->base);
List->base = NULL;
List->capacity = 0;
List->size = 0;
}
int main()
{
SeqList myList;
IntialList(&myList);
textList(&myList); //给表赋随机数
show_list(&myList);
pop_back(&myList) ; //删除最后一个
show_list(&myList);
pop_front(&myList); //删除第一个
show_list(&myList);
length(&myList); //显示表长度
destroy(&myList); //销毁表
show_list(&myList);
}
代码运行结果