顺序表

1.顺序表动态分配

#include <iostream>  // 输出语句头文件 
#include <stdlib.h>  //malloc函数头文件 
# define InitSize 50
typedef int Elemtype;
typedef struct{
	Elemtype *data;   //定义一个int(或其他)类型的指针data 
	int length,MaxSize;//定义长度,最大数量 
}SqList;
 int main(){
 SqList L;
 L.data=(Elemtype *)malloc(sizeof(Elemtype)*InitSize);
 //在动态内存区域申请一块Elemtype类型的,
 //长度为数据类型Elemtype*InitSize的连续空间,
 //并返回第一个字节地址 
 L.data[0]=1206;
 L.length=1;
 L.MaxSize=InitSize;
 printf("%d %d %d",L.data[0],L.MaxSize,L.length);
 	return 0;	
 }

2、顺序表基本操作—初始化操作

#include <iostream> 
#include <stdlib.h> 
#define OK 1
#define OVERFLOW 0
#define InitSize 10

typedef int Elemtype;
typedef struct{
	Elemtype *data;
	int length,MaxSize; 
}SqList;

//构造一个空的线性表L 
int InitSqList(SqList &L){
	
	L.data=(Elemtype *)malloc(sizeof(Elemtype)*InitSize);

	if(!L.data)//判断是否分配失败
	  exit(OVERFLOW);//此句的意思是如果在malloc分配后,仍然为空,则分配失败。 
	//真正初始化操作 
	L.length=0;
	L.MaxSize=InitSize;
	return OK;
}
int main()
{
     SqList L;	
	InitSqList(L);	
}

2、顺序表基本操作—插入操作
【在顺序表L的第i(1<=I<=L.length+1)个位置插入新元素e 】
注意:当插入的位置为第i个节点时,需要移动n-i+1个元素

算法思想:

​ 1.判断插入位置i是否合法
​ 2.判断顺序表的存储空间是否已满
​ 3.将第n至第i位的元素依次向后移动一个位置,空出第i个位置
​ 4.将要插入的新元素e放入第i个位置
​ 5.表长加1,插入成功返回OK

posted @ 2022-07-04 16:52  堂吉诃德12138  阅读(30)  评论(0)    收藏  举报