1. 程式人生 > 其它 ><資料結構>順序表的插入、刪除操作

<資料結構>順序表的插入、刪除操作

插入操作

#include<stdio.h>
#define maxSize 10            //定義最大長度

/*靜態分配實現順序表
缺點:陣列存滿了無法擴大空間,因此對應的有動態分配實現陣列
*/

struct List
{
	int data[maxSize];    //用靜態的“陣列”存放資料
	int length;     //順序表的當前長度,即實際已經存放的資料
};

struct List SqList;

void InitList(struct List *L)
{
	L->length = 0;
}

_Bool InsertList(struct List *
L, int position, int e) { if (position <0|| position > L->length) //判斷插入位置是否合法 { printf("error position!insert fail!\n"); return 0; } if (L->length >= maxSize) { printf("儲存空間已滿\n"); return 0; } for (int i = L->length-1; i >= position; i--) {
L->data[i + 1] = L->data[i]; //將位置在position及其以後的元素從後往前向後移一位 } L->data[position] = e; L->length++; return 1; } int Main1() { InitList(&SqList); for (int i = 0; i < maxSize; i++) //初始化資料 { SqList.data[i] = i * 5; SqList.length++; } printf("初始化後的資料:"); for (
int i = 0; i < SqList.length; i++) { printf("%d\t", SqList.data[i]); } printf("\n"); InsertList(&SqList, 7, 6); printf("插入後資料:"); for (int i = 0; i < SqList.length; i++) { printf("%d\t", SqList.data[i]); } return 0; }

執行結果:
在這裡插入圖片描述

刪除操作

_Bool ListDelete(struct List *L, int position, int *e),刪除下標為position的元素,並用e返回刪除元素的值

_Bool ListDelete(struct List *L, int position, int *e)
{
	if (position<0 || position>L->length - 1)
	{
		return 0;
	}
	if (L->length <= 0)
	{
		return 0;
	}
	*e = L->data[position];
	for (int i = position; i < L->length; i++)
	{
		L->data[i] = L->data[i + 1];

	}
	
	L->length--;
	return 1;
}