码迷,mamicode.com
首页 > 其他好文 > 详细

顺序表

时间:2018-01-24 00:46:16      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:struct   分享图片   lib   遍历   连续   是什么   线性   int   数组下标   

顺序表作为数据结构的入门知识应该熟练掌握

1.线性表是什么?

答;类比队伍,它就是一群人在站队。有头、有尾、中间的前面后面有唯一一个人,这也是它的逻辑结构。同时它的物理结构是一块连续的物理内存。支持随机访问每个元素,但它的存储分配只能预先进行,即静态分配。

2.线性表可以用来干什么?

答:最简单的哈希表,每个序号代表一个元素。

  系列的操作如查找、插入、删除

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100

/*顺序表的结构体定义*/
typedef struct
{
int data[maxsize];
int length;
}Sqlist; //sqlist 是自己定义的一种数据类型

/*初始化顺序表*/
void initlist(Sqlist & L)
{
L.length =0;
}

/*遍历线性表*/
void traList (Sqlist L)
{
int i;
for(i=0;i!=L.length ;++i)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
/*按元素值查找该元素的位置*/
int findElem(Sqlist L,int e)
{
int i;
for(i=0;i<L.length;++i)//数组下标从0到L.length-1,顺序表从1到L.length
if(e==L.data[i])
return i; //表中的位置为数组的序号加1
return -1;
}

/*插入元素*/
int insertElem(Sqlist & L,int p,int e)
{
int i;
if(p<0||p>L.length-1||L.length==maxsize)
return 0;
for(i=L.length -1;i>=p;--i) //从P开始的元素后移
L.data[i+1]=L.data[i];
L.data[p]=e;
++L.length;
return 1;
}

/*删除元素*/
int deleteElem(Sqlist &L,int p,int &e)
{
int i;
if(p<0||p>L.length-1||L.length ==0)
return 0;
e=L.data [p];
for(i=p;i<L.length -1;++i)
L.data [i]=L.data [i+1];
--L.length ;
return 1;
}

int main()
{
int i;
Sqlist L={{3,5,2,16,13,53,56,7},8};//定义顺序表时赋值
traList(L);

printf("查找元素13的位置\n");
i=findElem(L,13);
printf("该元素的位置%d\n",i);

printf("顺序表的第二个位置插入元素1\n");
insertElem( L,1,1);
traList(L);

printf("删除顺序表的的五个元素\n");
deleteElem(L,4,i);
traList (L);

system("pause");
return 0;
}

技术分享图片

 

顺序表

标签:struct   分享图片   lib   遍历   连续   是什么   线性   int   数组下标   

原文地址:https://www.cnblogs.com/Star-Lit/p/8338226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!