数据结构绪论&顺序表

本文探讨了数据结构中的顺序表,包括其逻辑结构、存储结构和相关操作如插入、删除。顺序表在算法上简单,空间利用率高,但预估元素数量和移动元素较多是其局限。代码示例展示了如何实现一个简单的顺序表,包含初始化、获取长度、插入和删除元素等功能。
摘要由CSDN通过智能技术生成

数据结构

  • 存储结构
  • 逻辑结构
  • 操作

逻辑结构

  • 线性

算法分析:时间复杂度、空间复杂度

顺序表:算法简单、空间单元利用率高;但需要预先得知元素最多个数,插入删除需要移动的元素多。
在这里插入图片描述

#include <stdio.h>

typedef struct {
	int nums[100];
	int size;
}SZ;

void ListInitiate (SZ *L) {
	L->size = 0;
}

int ListLength (SZ L) {
	return L.size;
}

int ListInsert (SZ *L, int i, int x) {
	int j;
	for(j = L->size; j>i; j--) {
		L->nums[j] = L->nums[j-1];
	}
	L->nums[i] = x;
	L->size++;
	return 1;
}

int ListDelete (SZ *L, int i, int *x) {
	int j;
	*x = L->nums[i];
	for(j = i + 1; j <=L->size-1; j++) {
		L->nums[j-1] = L->nums[j];
	}
	L->size--;
	return 1;
}

int ListGet (SZ L, int i, int *x) {
	if(i<0 || i>L.size-1) {
		printf("参数i不合法!\n");
		return 0;
	}else {
		*x = L.nums[i];
		printf("%d ",*x);
		return 1;
	}
}



int main () {
	SZ sz;
	int x;
	ListInitiate(&sz);
	ListInsert(&sz, 0, 1);
	ListInsert(&sz, 1, 2);
	ListInsert(&sz, 2, 3);
	ListInsert(&sz, 3, 4);
	ListInsert(&sz, 4, 5);
	ListInsert(&sz, 5, 6);
	ListInsert(&sz, 6, 7);
	ListInsert(&sz, 7, 8);
	ListInsert(&sz, 8, 9);
	ListInsert(&sz, 9, 10);
	
	ListDelete(&sz, 4, &x);
	int i;
	for(i = 0; i < ListLength(sz); i++) {
		ListGet(sz, i, &x);
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值