线性表顺序实现方式

         线性表是最基本、最简单的、也是很常用的一种数据结构。线性表中数据元素的关系式一对一的

   关系,即是除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。在实际中使用也是

   较为广泛的,接下来用顺序实现方式简单的对其进行一下模拟。

           源代码如下:

/**
  @author Kiritor
    顺序线性表的演示
*/

#include "stdafx.h"
#include<stdlib.h>
#include<conio.h>
#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
#include<malloc.h>
#define OK 1
#define OVERFLOW 0
typedef struct 
{
    int * element;//存储空间的基址
    int length;//当前线性表的长度
    int size ;//线性表的容量

}SqList;

/*初始化线性表*/
int init_SqList(SqList & l)
{
     l.element = (int *)malloc(LIST_INIT_SIZE*sizeof(int));//分配地址空间,线性表的总共的容量情况
	 if(!l.element)
	 {
	    exit(OVERFLOW);//分配失败则退出程序
	 }
	 l.length=0;
	 l.size=LIST_INCREMENT;//线性表的初始容量
	 printf("%s\n","初始化线性表成功!");
	 return OK;
}
/*输出线性表的内容*/
void print_SqList(SqList &l)
{ 
	int i=0;
	printf("%s\n","线性表内容:");
	for(i=0;i<l.length;i++)
	{ 
		printf("%d \n",*(l.element+i));
	}
}
/*插入数据到线性表
 i表示在第i个位置前面进行插入
 i从1开始*/
int insert_SqList(SqList &l,int i,int element)
{
	if(i<1||i>l.length+1)
		return OVERFLOW;
	if(l.length>=l.size)
	{
		//存储空间已满,重新进行分配
		int * newbase = (int *)realloc(l.element,(l.size+LIST_INCREMENT)*sizeof(int));
		l.element = newbase;
		l.size += LIST_INCREMENT;
	}
	//开始进行插入的操作
	int *q = &(l.element[i-1]);//q为需要插入的位置
	int *p;
	for(p=&(l.element[l.length-1]);p>=q;p--)
	{
		*(p+1)=*p;
	}
	*q  = element;
	l.length++;
	printf("%s%d\n","线性表插入",element);
	return OK;
		 
}
/*删除线性表的某个位置的元素
i表示要删除的元素的位置从1开始
element用来存放删除的元素*/
int delete_SqList(SqList &l,int i,int & element)
{
	if(i<1||i>l.length)
	{
		return OVERFLOW;
	}
	int *p= &(l.element[i-1]);
	element=*p;//将要删除的元素放入emlement中
	printf("删除的元素是:%d\n",element);
	int *q=l.element+l.length-1;
	for(++p;p<=q;p++)
	{
		*(p-1)=*p;//后面的元素往前面移动
	}
	l.length--;
	return OK;
}
int main(int argc, _TCHAR* argv[])
{   SqList l;
    int emlement=0;
	init_SqList(l);
	insert_SqList(l,1,123);
	insert_SqList(l,1,321);
	insert_SqList(l,2,231);
	print_SqList(l);
	delete_SqList(l,2,emlement);
	print_SqList(l);
	_getch();
	
	return 0;
}

          看一下结果图:

             

           以上就是线性表的顺序实现方式了,后续会对其链式实现方式及其特点做些总结。Over!

原文地址:https://www.cnblogs.com/javawebsoa/p/2999563.html