线性表动态存储模板

一个C语言的小模板:使用小型项目
使用数组进行存储,也就是线性表进行存储。先用这种数据结构吧
后续会进行更新。。。

#include "stdio.h"
#include "malloc.h"
#include "stdbool.h"

typedef struct {
	int * head;
	int length;
	int actual;
} table ;

void Init_list(table * p, int L) {	//对p这个表进行初始化
	p->head = (int * )malloc(sizeof(int) * L) ;	//定义表所需的动态空间
	if (NULL == p->head) {
		printf("初始化失败\n");
		exit(-1);
	} else {
		p->length = L;	//内存分配好之后初始化长度
		p->actual = 0;	//初始化实际元素个数
	}
	return ;
}

bool table_judge(table * list) { //判断表是否可用
	if ( 0 <= list->actual && 1 <= list->length && list->actual < list->length)
		return true;
	else
		return false;
}

void table_judge_print(table * list) { //输出表储存的详细信息
	if (1 == table_judge(list)) {
		printf("顺序表可用:head= %p, length = %d, actual = %d\n", list->head, list->length, list->actual);
		for (int i = 0; i < list->actual ; i++) {
			printf("%d\t", list->head[i]);
		}
	} else
		printf("顺序表不可用!");
}

void append_element(table * list, int num1) { //单个元素进行存储
	if (table_judge(list)) {
		list->head[list->actual] = num1;
		(list->actual) ++;
		printf("存储成功\n");
	} else
		printf("存储失败\n");
}

int main() {
	int L, x, num, num1;
	table list;	//定义一个表结点
	printf("1、初始化表\n");
	printf("2、查看表的详细信息\n");
	printf("3、对表进行存储\n");
	printf("!!!按任意键退出!!!\n");
	printf("\n请输入操作:\n");
	scanf("%d", &x);
	switch (x) {
		case 1:
			printf("开始创建顺序表......\n");
			printf("请输入表元素个数:\n");
			scanf("%d", &L);
			Init_list(&list, L);
			break;
		case 2:
			table_judge_print(&list);
			break;
		case 3:
			printf("请输入存储的个数:\n");
			scanf("%d", &num);
			for (int i = 0; i < num; i++) {
				printf("请输入该数:\n");
				scanf("%d", &num1);
				append_element(&list, num1);
			}
		default:
			return 0;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值