标签:return 线性表 int seqlist sqlist Linux last 数据结构 data
Linux C 数据结构—线性表
顺序表特点:
优势: 存储密度高,可以随机存取。
缺点:
1) 要求系统可以提供一片连续的存储空间,
2) 会出现成片移动的现象。
3) 数据的个数固定。
#include <stdio.h>
#define MAX 16
typedef int data_t;
typedef struct
{
data_t data[MAX]; //第一个成员: 存放具体的有效数据。
int last; //第二个成员: 存放有效数据的个数。
}seqlist_t;
//创建空顺序表
seqlist_t *creat_empty_sqlist()
{
seqlist_t *p = malloc(sizeof(seqlist_t));
p->last = 0;
return p;
}
//判断顺序表是否为空:是空:返回1,没空,返回0.
int empty_sqlist(seqlist_t *p)
{
if(p->last == 0)
return 1;
else
return 0;
}
//判断表是否满:是满:返回1.没满,返回0
int full_sqlist(seqlist_t *p)
{
if(p->last == MAX)
return 1;
else
return 0;
}
//清空顺序表
void clear_sqlist(seqlist_t *p)
{
p->last = 0;
}
//求表长度。(存放有效数据的个数)
int length_sqlist(seqlist_t *p)
{
return p->last;
}
//在指定位置插入数据。
int insert_sqlist(seqlist_t *L,data_t x,int pos)
{
int i;
if(full_sqlist(L) == 1 || pos > L->last+1 )
{
return -1;
}
for(i=L->last-1; i>=pos-1 ;i--)
{
L->data[i+1] = L->data[i];
}
L->data[pos-1] = x;
L->last++;
return 1;
}
//删除指定位置上的数据。
int delete_sqlist(seqlist_t *L,int pos)
{
int i;
if(empty_sqlist(L) == 1 || pos > L->last)
{
return -1;
}
for(i=pos-1; i<L->last ;i++)
{
L->data[i] = L->data[i+1];
}
L->last--;
return 1;
}
//查找表中是否存在值为 value 的数据。
int search_sqlist(seqlist_t *L,data_t value)
{
int i;
for(i=0; i<L->last; i++)
{
if(value == L->data[i])
{
return i+1;
}
}
return 0;
}
//打印顺序表。
void print_array(seqlist_t *L)
{
int i;
for(i=0; i<L->last; i++)
printf("%5d",L->data[i]);
printf("\n");
return ;
}
//测试以上函数是否好用。
int main()
{
seqlist_t *p = creat_empty_sqlist();
int n = empty_sqlist(p);
insert_sqlist(p,11,1);
insert_sqlist(p,33,2);
insert_sqlist(p,22,2);
insert_sqlist(p,55,4);
print_array(p);
delete_sqlist(p,3);
print_array(p);
if( search_sqlist(p,44) == 0)
printf("not found 44\n");
if(search_sqlist(p,33) == 0)
printf("Not found 33\n");
free(p);
return 0;
}
sinat_41617828
发布了4 篇原创文章 · 获赞 0 · 访问量 49
私信
关注
标签:return,线性表,int,seqlist,sqlist,Linux,last,数据结构,data 来源: https://blog.csdn.net/sinat_41617828/article/details/104202657
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。