删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e

/********************************************************************************************************
*
*	file name:	Zqh_splist_4.22.2.c
* 	author	 :	keyword2024@163.com
* 	date	 :	2024/04/22
* 	function :	删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e。
*	note	 :	考研题
*	
*  Copyright (c)  2023-2025   keyword2024@163.com    All right Reserved
* ******************************************************************************************************/

// 优化前
// 定义顺序表结构体
typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

int SeqList_Remove(*L,int p)
{
	//判断顺序表的地址是否有效
	if(NULL == L)
	{
		return 0;
	}

	int e = 0; //变量e,记录待删除元素的值


	//把待删除元素的值备份到变量e中
	e = L[p];

	//把待删除元素的后继元素向前移动一个单位
	for (int i = p; i < length; ++i)
	{
		L[i] = L[i+1];
	}

	return 1;
}

// 优化后
// 删除顺序表L中下标为p的元素,成功返回1,否则返回0,并将被删除元素的值赋给e
int SeqList_Remove(SeqList *L, int p, int *e) {
    if (p < 0 || p >= L->length) {
        return 0; // 删除失败,下标越界
    }

    *e = L->data[p]; // 将被删除元素的值赋给e

    // 将后续元素前移
    for (int i = p; i < L->length - 1; i++) {
        L->data[i] = L->data[i + 1];
    }

    L->length--; // 更新顺序表长度
    return 1; 
}
posted @ 2024-04-22 21:42  晖_IL  阅读(10)  评论(2编辑  收藏  举报