数据结构顺序表
来源:互联网 发布:星际战甲软件 编辑:程序博客网 时间:2024/06/03 16:24
//顺序表存储
//顺序存储就是先申请一块区域,再插入相应数据
//但可能并没有插满,会浪费一定的空间,这就是顺序存储局限性
#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;
}
//顺序存储就是先申请一块区域,再插入相应数据
//但可能并没有插满,会浪费一定的空间,这就是顺序存储局限性
#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;
}
阅读全文
0 0
- 数据结构之 顺序表
- 数据结构--顺序线性表
- 数据结构---顺序表
- 数据结构之顺序表
- 数据结构顺序表
- 数据结构顺序表
- 顺序表(数据结构)
- 数据结构之顺序表
- 数据结构之顺序表
- 数据结构笔记--顺序表
- 【数据结构】顺序表
- 数据结构《顺序链表》
- 数据结构之顺序表
- 数据结构试验 顺序表
- 数据结构--顺序表
- 数据结构--顺序表
- 数据结构之顺序表
- 基本数据结构:顺序表
- 继承&多态
- python生成式
- "足球论之数据库知识点罗列"
- 阿里云代金券领取及使用
- 图论500题
- 数据结构顺序表
- QT之事件过滤器
- 循环引用
- web前端入门知识笔记——html基础(传智播客)
- C++中的继承关系、访问限定符,六个默认成员函数以及菱形继承和虚继承
- C#访问HTTP请求
- 设计模式-最少知识原则
- Eclipse新建jsp时使用自己定义的模版
- Catch That Cow --bfs