顺序表
顺序表作为数据结构的入门知识应该熟练掌握
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;
}

                    
                
                
            
        
浙公网安备 33010602011771号