数据结构_顺序表

本文介绍了使用C语言实现顺序表的基本操作,包括构造空表、销毁、清空、获取长度、判断空表、访问元素、查找指定关系元素、获取前驱与后继、插入、删除及遍历等。
摘要由CSDN通过智能技术生成

一.顺序表的基本操作

​ 声明: 以下算法操作均为C语言执行,代码均参考老师上课所讲内容

​ //--------------线性表的动态分配顺序存储结构--------------------//

			/*c2-1.h*/
#define SIZE 10
#define LIStINCREMENT 2
typedef struct{
   
	ElemType *elem;
    int length;
    int listsize;
}SqList;

1.构造一个空的顺序表

#define size 10
#define ERROR 0
Status InitList(SqList *L){
   
    (*L).elem=(ElemType *)malloc(SIZE*sizeof(ElemType));
    if(!(*L).elem)
        exit(ERROR);
    (*L).length=0;
    (*L).listsize=SIZE;
    return 0;
}

2.销毁顺序表

Status DestroyList(SqList *L){
   
    free((*L).elem);
    (*L).elem=null;
    (*L).length=0;
    (*L).ListSize=0;
    return 0;
}

3.清空顺序表

Status ClearList(SqList *L){
   
    (*L).length=o;
    return 0;
}

4.返回顺序表的长度

int ListLength(SqList L){
   
	return L.length;
}

5.判断顺序表是否是空表

#define TRUE 1
#define FALSE 0
Status ListEmpty(SqList L){
   
	if(L.length==0)
        return TRUE;
    else
        return FALSE;
        
}

6.用e返回L中第i个数据元素的值

Status GetElem(SqList L,int i, ElemType *e){
   
	if(i<1||i>L.length)
		exit (ERROR);
    *e=*(L.elem+i-1);
    return ok;	
}

7. 返回L中第i个与e满足关系compare()的数据元素的位序。

   int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)){
    
   /* 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0) */
   ElemType *p;
   int i=1; /* i的初值为第1个元素的位序 */
   p=L.elem; /* p的初值为第1个元素的存储位置 */
   while(i<=L.length&&!compare(*p++,e))
     ++i;
   if(i<=L.length)
     return i;
   else
     return 0;
 }

8. 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱

 Status PriorElem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值