数据结构之顺序表
#include <stdio.h>
#define MaxSize 50
typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList; //给这个结构体起别名SqList
typedef int ElemType; //给int起别名ElemType
//建立顺序表
void CreateList(SqList * &L,ElemType a[],int n)
{	int i=0,k=0;
 	L=(SqList *)malloc(sizeof(SqList));
    /* sizeof(SqList):计算结构体 SqList 占用的总字节数
       malloc(sizeof(SqList)):向系统申请一块大小为 SqList 的内存空间,malloc 返回的是 void* 类型(无类型指针)
       (SqList *):类型强制转换,将 void* 转换为 SqList* 类型
    */
 	while (i<n)
    {	L->data[k]=a[i];
     	k++;i++;
    }
 	L->length=k;
}
//初始化线性表
void InitList(SqList * &L)
{	L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}
//销毁线性表
void DestroyList(SqList * &L)
{	
    free(L);
}
//判断线性表是否为空表
bool ListElemType(SqList * L)
{
    return(L->length==0);
}
//求线性表的长度
int ListLength(SqList * L)
{
    return(L->length);
}
//输出线性表
void DispList(SqList * L)
{	for (int i=0;i<L->length;i++)
		printf("%d",L->data[i]);
 	printf("\n");
}
//按序号求线性表中的元素
bool GetElem(SqList * L,int i,ElemType &e)  // 调用时
{	if (i<1 || i>L->length)                 // ElemType result;
        return false;                       // GetElem(L, 2, result);  // result 和函数内的 e 是同一个变量
	e=L->data[i-1];							// 函数内修改 e,外部的 result 也会同步改变
 	return true;                            // 这里的 e 是外部传入变量的一个别名
}                                           // 修改 e 就是直接修改外部的原始变量
//按元素值查找
int LocateElem(SqList * L,ElemType e)
{	int i=0;
 	while (i<L->length && L->data[i]!=e)
    	i++;
 	if (i>=L->length)
        return 0;
 	else
        return i+1;
}
//插入数据元素
bool ListInsert(SqList * &L,int i,ElemType e)  // 这里的 e 是外部传入值的一个副本
{	int j;                                     // 修改 e 不会影响外部的原始变量
 	if (i<1 || i>L->length+1 || L->length==MaxSize)
    	return false;
 	i--;
 	for (j=L->length;j>i;j--)
        	L->data[j]=L->data[j-i];
 	L->data[i]=e;
 	L->length++;
 	return true;
}
//删除数据元素
bool ListDelete(SqList * &L,int i,ElemType &e)
{	int j;
 	if (i<1 || i>L->length)
        return false;
 	i--;
 	e=L->data[i];
 	for (j=i;j<L->length-1;j++)
        L->data[j]=L->data[j+1];
 	L->length--;
 	return true;
}
posted on 2025-10-20 00:02  wss0920  阅读(6)  评论(0)    收藏  举报