c语言数据结构顺序表

线性表有两种结构一种顺序存储结构一种链式存储结构
一组数据中的每一个个体是一个元素
一个个体前一个元素是这个个体的直接前驱
一个个体前一个元素是这个个体的直接后驱

1顺序表
#include “stdafx.h”
#include <stdio.h>
#include <stdlib.h>

#define ListSize 5//申请空间大小

typedef struct LIST{
int * head;
int length;
int size;
};

//初始化顺序表
LIST initList(){
LIST list;
list.head = (int*)malloc(ListSize*sizeof(int));//构造一个空的顺序表,动态申请存储空间
if (!list.head)
{
printf(“申请失败”);
exit(0);
}
list.length = 0;
list.size = ListSize;
return list;
}

int main(int argc, _TCHAR* argv[]){
initList();
return 0;
}
以上是初始化一个顺序表的c语言代码

以下是顺序表的基础操作
(1)顺序表插入元素
//顺序表元素添加 list 链表 add 添加到的位置 elem要添加的元素
LIST addToList(LIST list, int add, int elem){
if (add > (list.size + 1)|| add < 1)
{
//如果要添加的位置不正确
printf(“添加位置错误”);
return list;
}

//查看是否有多余的空间可以插入
if (list.size == list.length)
{
	printf("没有多余的空间");
	list.head = (int *)realloc(list.head, (list.size + 1)*sizeof(int));
	if (!list.head) {
		printf("存储分配失败");
		return list;
	}
	list.size += 1;
}

//插入操作,需要将从插入位置开始的后续元素,逐个后移
for (int i = list.length - 1; i >= add - 1; i--) {
	list.head[i + 1] = list.head[i];
}
//后移完成后,直接将所需插入元素,添加到顺序表的相应位置
list.head[add - 1] = elem;
//由于添加了元素,所以长度+1
list.length++;

return list;

}
(2)顺序表查找元素
//查找函数,其中,elem表示要查找的数据元素的值
int selectTable(LIST t,int elem){
for (int i=0; i<t.length; i++) {
if (t.head[i]==elem) {
return i+1;
}
}
return -1;//如果查找失败,返回-1
}
(3)顺序表更改元素
//更改函数,其中,elem为要更改的元素,newElem为新的数据元素
LIST amendTable(LIST t,int elem,int newElem){
int add=selectTable(t, elem);
t.head[add-1]=newElem;//由于返回的是元素在顺序表中的位置,所以-1就是该元素在数组中的下标
return t;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值