//顺序表存储
//顺序存储就是先申请一块区域,再插入相应数据
//但可能并没有插满,会浪费一定的空间,这就是顺序存储局限性
#include <stdio.h>
#include <stdlib.h>//malloc
#include <strings.h>//bzero
#define MAX 10
typedef int datatype;
typedef struct
{
datatype buf[MAX];//最多存储数
int n;//实际存储数
}seqlist;
//1.创建空的顺序表
seqlist* create_empty_seqlist()
{
seqlist *l = NULL;
l = (seqlist *)malloc(sizeof(seqlist));
if(NULL == l)
{
printf("malloc fail",__FUNCTION__);
return NULL;
}
bzero(l,sizeof(seqlist));
return l;
}
//2.判断顺序表是否为满
int is_full_seqlist(seqlist*l)
{
return l->n == MAX ? 1: 0;
}
//3.判断顺序表是否为空
int is_empty_seqlist(seqlist *l)
{
return l->n == 0 ? 1 : 0;
}
//4.顺序表插入数据
void insert_data_seqlist(seqlist *l,datatype data)
{
l->buf[l->n] = data;
l->n++;
return ;
}
//5.打印顺序表数据
void printf_data_seqlist(seqlist *l)
{
int i = 0;
for(i = 0;i < l->n;i++)
{
printf("%d ",l->buf[i]);
}
return ;
}
//6.按要求插入数据
void insert_assign_seqlist(seqlist *l,int post,datatype data)
{
int set = post - 1;
int last = l->n - 1;
int i = 0;
for (i = last;i >= set;i--)
{
l->buf[i + 1] = l->buf[i];
}
l->buf[set] = data;
l->n++;
return ;
}
//7.删除相同数据
void dele_same_deleta_data(seqlist*l,datatype data)
{
int i = 0, j= 0;
for(i = 0;i < l->n;i++)
{
if(data != l->buf[i])
{
l->buf[j] = l->buf[i];
j++;
}
}
l->n = j;
return ;
}
//8.数据排序
void sort_data_seqlist(seqlist *l)
{
int i = 0,j = 0,temp = 0;
for(i = 0;i < l->n - 1;i++)
{
for(j = 0;j < l->n - 1 - i;j++)
{
if(l->buf[j] < l->buf[j + 1])
{
temp = l->buf[j];
l->buf[j] = l->buf[j + 1];
l->buf[j + 1] = temp;
}
}
}
return ;
}
int main()
{
seqlist *l = NULL;
l = create_empty_seqlist();
datatype buf[] = {10,20,30,40,50};
int len = sizeof(buf) / sizeof(buf[0]);
int i = 0;
int data = 0, post = 0;
int data1 = 0;
for(i = 0;i < len;i++)//循环插入数据
{
insert_data_seqlist(l,buf[i]);
}
printf_data_seqlist(l);
putchar('\n');
printf("please enter insert post and data:");
scanf("%d%d",&post,&data);
insert_assign_seqlist(l,post,data);
printf_data_seqlist(l);
putchar('\n');
printf("please input delete data:");
scanf("%d",&data1);
dele_same_deleta_data(l,data1);
printf_data_seqlist(l);
putchar('\n');
sort_data_seqlist(l);
printf_data_seqlist(l);
putchar('\n');
free(l);//释放申请内存
l = NULL;
return 0;
}
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】C语言实现顺序栈
【数据结构】第三章——栈、队列和数组详细介绍通过C语言实现顺序栈
数据结构 C语言 顺序栈 -
【数据结构】详细剖析线性表
【数据结构】第二章——线性表(9)总结了线性表的基本知识点,并对循序表与链表进行了比较
数据结构 C语言 线性表 顺序表 链表 -
数据结构(顺序表
【代码】数据结构(顺序表。
数据结构 leetcode python 算法 职场和发展 -
数据结构 | 顺序表专题
顺序表专题~~
数据结构 c语言 顺序表 ci 数据 -
数据结构(二)——顺序表
顺序表
数据结构 链表 算法 数据 顺序表 -
数据结构一——顺序表
顺序表基本运算的实现 参考资料:数据结构教程 李春葆版
sql 线性表 i++ 顺序表 时间复杂度