为方便以后继续完善下面代码可直接复制以及对应的图片便于观看
一:为了方便先自己定义头文件
#pragma once
#define InitSize 10
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int* date;
int MaxSize;
int len;
}list;
//初始化
void InitList(list* L);
//增加动态数组长度;
void IncreaseSize(list* L);
//数据插入
void InsretList(list* L, int i, int e);
//数据的删除
int Delate(list* L, int i);//返回被删除的数据
//按位查找
int GetElem(list L, int i);
//按值查找
int VulueElem(list* L, int vulue);//返回位置
//打印
void print(list L);
二:具体代码实现:为方便以后继续完善下面代码可直接复制以及对应的图片便于观看
#include"1.h"
//顺序表的初始化
void Initlist(list* L)
{
int i = 0;
L->date = (int*)malloc(sizeof(int) * InitSize);
if (L->date == NULL)
{
printf("开辟失败");
return;
}
for (i = 0; i < InitSize; i++)
{
L->date[i] = i;
L->len=i+1;
}
L->MaxSize = InitSize;
}
//数组长度
void IncreaseList(list* L)
{
if (L->len == L->MaxSize)
{
int i;
int* P = L->date;//将date里面的数据存起来
L->date = (int*)malloc(sizeof(int) * (L->MaxSize+L->len));//重新开辟空间
//将存起来的数据重新导入L->date中;
if (L->date == NULL)
{
printf("开辟空间失败\n");
return;
}
for (i = 0; i < L->len ;i++)
{
L->date[i] = P[i];
}
L->MaxSize = L->MaxSize + L->len;
free(P);
}
else
{
return;
}
}
//插入
void InsertList(list* L, int i, int e)
{
IncreaseList(L);
if (i<1 || i>L->len)
{
printf("插入失败:\n");
return;
}
else
{
int j;
for (j = L->len; j >= i-1; j--)
{
L->date[j + 1] = L->date[j];
}
L->date[i-1] = e;
L->len++;
}
}
//按位删除
int Delate(list* L, int i)//返回删除的值
{
if (i<1 || i>L->len)
{
return 0;
}
int j = L->date[i-1];//将删除的值存起来
for (i; i <= L->len; i++)
{
L->date[i-1] = L->date[i ];
}
L->len--;
return j;
}
//按位查找返回对应的值
int GetElem(list L,int i)
{
return L.date[i - 1];
}
//按值查找返回对应的位置
int VulueElem(list L, int vulue)
{
int i;
for (i = 0; i < L.len; i++)
{
if (L.date[i] == vulue)
return i + 1;
}
return 0;
}
//打印
void print(list L)
{
int i=0;
for(i=0;i<L.len;i++)
{
printf("%5d", L.date[i]);
}
printf("\n");
}
int main()
{
list L;
Initlist(&L);
printf("初始化的数据1为:\n");
print(L);
printf("插入后的数据为:\n");
InsertList(&L, 5, 20);
print(L);
int j=Delate(&L, 6);
printf("删除的值为:%d\n", j);
print(L);
int k=GetElem(L,3);
printf("第三个元素为:%d\n", k);
printf("值为5的元素为第%d个\n", VulueElem(L,5));
return 0;
}
三:代码执行结果