当前位置: 首页 > article >正文

数据结构 / 顺序表操作 / 顺序表尾部删除

1.实现逻辑

只需要把顺序表的长度减1。

2.顺序表尾部删除函数代码

/*
 *顺序表尾部删除
 * */

int delete_tail(sqlist *list)
{

	if(NULL==list || 1==is_list_empty(list))
	{
	
		return -1;
	}

	list->len--;
	return 0;


}

3. 完整代码

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#define MAXSIZE 20
typedef int data_type;

typedef struct SQLIST
{
	//数据元素
	data_type arr[MAXSIZE];
	int len;
	

}sqlist;

sqlist *create();
int append(sqlist *list, data_type element);
int is_list_full(sqlist *list);
int is_list_empty(sqlist *list);
void output(sqlist *list);
int delete_tail(sqlist *list);

int main(int argc, const char *argv[])
{
	
	data_type element;
	int n;

	puts("> ---create a sqlist---\n");
	sqlist *list=create();
	if(NULL==list)
	{
		printf("\tfailed to create sqlist!\n");
		return -1;
	}
	
	printf("\ta sqlist has been created!\n");
	putchar(10);

	
	puts("> ---append elements to list---\n");
	printf("\thow many element do you want to append?(max:%d):", MAXSIZE);
	scanf("%d", &n);
	for(int i=0; i<n; i++)
	{
		printf("\tplease input No.%d element:", i+1);
		scanf("%d", &element);
		int ret=append(list, element);
		if(0==ret)
		{
			printf("\tlist: len=%d / max=%d!\n", list->len, MAXSIZE);
		}
		else
		{
			printf("\tfailed to append element!\n");
			break;
		}
		putchar(10);
	}
	puts("> ---output list by traversing---\n");
	output(list);
	putchar(10);

	puts("> --- delete tail element---");
	int ret =  delete_tail(list);
	output(list);
	putchar(10);




	
	return 0;
}



/*
 *申请成功返回堆区内存首地址
 *失败返回NULL
 * */

sqlist *create()
{
	sqlist* list=(sqlist*)malloc(sizeof(sqlist));
	if(NULL==list)
	{
		return NULL;
	}
	
	//顺序表长度清零
	list->len=0; 	
	
	//顺序表数据元素清零
	memset(list->arr, 0, sizeof(list->arr));
	return list;
}

/*
 *满了返回1
 *不满返回0
 * */

int is_list_full(sqlist *list)
{
	return list->len==MAXSIZE ? 1 : 0;
}

/*
 *注意要判断顺序表是否已满
 *成功返回0
 *失败返回-1
 * */

int append(sqlist *list, data_type element)
{
	if(NULL==list || 1==is_list_full(list))
	{
		return -1;
	}

	list->arr[list->len++]=element;
	return 0;
}

/*
 *判断顺序表是否为空
 * */

int is_list_empty(sqlist *list)
{
	return list->len == 0 ? 1 : 0;  

}


/*
 *顺序表遍历
 *
 * */

void output(sqlist *list)
{
	if(NULL==list||1==is_list_empty(list))
	{
		printf("list is NULL!\n");
		return;
	}

	for(int i=0; i<list->len; i++)
	{
		printf("%d\t", list->arr[i]);
	}
	putchar(10);

}

/*
 *顺序表尾部删除
 * */

int delete_tail(sqlist *list)
{

	if(NULL==list || 1==is_list_empty(list))
	{
	
		return -1;
	}

	list->len--;
	return 0;


}


http://www.kler.cn/a/147070.html

相关文章:

  • 【C++动态规划】3148. 矩阵中的最大得分|1819
  • 【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
  • Jenkins下载安装、构建部署到linux远程启动运行
  • vue3 如何调用第三方npm包内部的 pinia 状态管理库方法
  • 从零入门激光SLAM(二十三)——direct_visual_lidar_calibration全型号激光雷达-相机标定包
  • 微服务即时通讯系统的实现(客户端)----(2)
  • C语言进阶之笔试题详解(1)
  • 基于python的NBA球员数据可视化分析的设计与实现
  • EFCore乐观并发
  • uniapp高德、百度、腾讯地图配置 SHA1
  • C语言第三十四弹--矩形逆置
  • 小航助学题库蓝桥杯题库stem选拔赛(21年3月)(含题库教师学生账号)
  • ElasticSearch之cat anomaly detectors API
  • nodejs+vue+elementui足球篮球联赛系统
  • 【C++】POCO学习总结(六):线程、线程池、同步
  • iview table 默认排序字段不高亮解决办法
  • Elasticsearch:什么是非结构化数据?
  • css实现图片绕中心旋转,鼠标悬浮按钮炫酷展示
  • android 9 adb安装过程学习(三)
  • TS 函数及多态
  • Windows10-用户账户控制、Windows远程桌面
  • 解决:前端js下载文件流出现“未知文件格式”错误
  • C语言重点编程题——11-20
  • Android 编译系统AIDL模块couldn‘t find import for class错误
  • leetcode42接雨水问题
  • Javascript每天一道算法题(十八)——矩阵置零-中等