顺序表查找某元素
本文分享如何在某位置插入元素,删除某位置元素,找到某元素位置。
#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");
}
//在某位置插入元素x
void insert_pos(SeqList* List, int pos, ElemType x)
{
if (pos<0||pos>List->size)
{
printf("插入数据的位置非法,不能插入数据\n");
return;
}
for (int i = List->size; i > pos;i--)
{
List->base[i] = List->base[i - 1];
}
List->base[pos] = x;
List->size++;
}
//删除某位置元素
void delete_pos(SeqList*List, int pos)
{
if (pos<0||pos>=List->size)
{
printf("删除数据的位置非法,不能删除");
}
for (int i = pos; i < List->size - 1;i++)
{
List->base[i] = List->base[i + 1];
}
List->size--;
}
//找到某元素的位序
int find(SeqList *List, ElemType key)
{
for (int i= 0; i < List->size;i++)
{
if (List->base[i]==key)
{
printf("元素位置为%d",i+1);
return i;
}
}
return -1;
}
int main()
{
SeqList myList;
IntialList(&myList);
textList(&myList); //给表赋随机数
show_list(&myList);
insert_pos(&myList,2,99);
show_list(&myList);
delete_pos(&myList,3);
show_list(&myList);
find(&myList,99);
}