首页 > 其他 > 详细

顺序表

时间:2018-01-24 00:13:44      阅读:222      评论:0      收藏:0      [点我收藏+]

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

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;
}

技术分享图片

 

顺序表

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!