数据结构系列之最简线性表

数据结构

				之最简线性表(顺序存储)

/*
时间:2-26
运行环境:dev c++
*/

#include<stdio.h>
#include<stdlib.h>
#define INITAL_SIZE 2 
#define add_Size 10 //
typedef int ElemType ; 
typedef struct {
	
	ElemType  *el ; //基址
	int length ;  //已有元素数
	int list_Size ; //未经扩容时可容纳最大元素数
} Slist;

void initi(Slist *L) ;
void insert(Slist *L ,int i , ElemType e ) ;
void print(Slist *L) ;



int main (void){
	
 	Slist L1 ;
 	
 	//初始化线性表 
 	 initi(&L1) ;
 	// 示例:
 	 insert(&L1,0,1) ;
    insert(&L1,0,122) ;
    insert(&L1,1,1) ;
    insert(&L1,2,2) ;
	print(&La) ;
	
	return 0 ;
	
}
void print(Slist *L) {
	int i = 0 ;
	int j = L->length ;
	while( i< j){
			printf("%d  \n",L->el[i]) ;
			i ++ ;
	}
	

}
void initi(Slist *L) {
	
	//所谓线性表 顺序结构的初始化就是为其分配一定的内存空间  
	L->el = (ElemType *)malloc(INITAL_SIZE * sizeof(ElemType));
	//判断是否分配成功
	if(L->el==NULL){
		
		printf("初始化失败\n") ;
		return ; 
	} else {
		
		printf("分配内存成功,请继续!!!!!\n") ;
		L->length = 0 ;
		L->list_Size =  INITAL_SIZE ;
		 
	}
	
	
}
void insert(Slist *L ,int i , ElemType e ) {
	
	if(L==NULL||i<0||i>L->length) {
		
		printf("所插入的线性表无效,终止执行\n") ;
		return ; 
		
	}
	
	if(L->length>= L->list_Size){
		
		//开始扩容	
	//	L->el = (ElemType*) malloc((add_Size+L->list_Size) * sizeof(ElemType)) ;
		L->el= (ElemType *)realloc(L->el, (L->length + add_Size) * sizeof(ElemType));
		
		if(L->el==NULL)  {
			printf("扩容失败") ;
			return ; 
			
		}
		L->list_Size = L->list_Size +add_Size ;
		printf("扩容一次") ; 
		
	} 
	
	for (int k = L->length ; k > i; k--) {
		L->el[k] = L->el[k-1] ;
		
	}
	L->el[i] = e ;
	if(i==L->length)
  		 L->length ++ ;
	
} 

接下来的delete(Slist *L,int i),我想初学者也可以
销毁线性表只需要了解free()函数的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值