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

数据结构 / 顺序表的遍历

1. 顺序表的遍历函数代码

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

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);

}

2. 完整代码

#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 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);



	
	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);

}

====================

目录 / 学习笔记快速链接


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

相关文章:

  • STM32低功耗模式
  • STM32-串口-UART-Asynchronous
  • WPS数据分析000001
  • HTML之拜年/跨年APP(改进版)
  • 国内汽车法规政策标准解读:GB 44495-2024《汽车整车信息安全技术要求》
  • SSM课设-学生管理系统
  • 云匣子 FastJson反序列化RCE漏洞复现
  • 京东数据分析(京东大数据):2023年10月京东手机行业品牌销售排行榜
  • 初学vue3与ts:setup与setup()下的数据写法
  • Blender快捷键总结
  • vs2015如何远程启动程序来进行调试
  • Vue轻松入门,附带学习笔记和相关案例
  • Retrofit怎么返回一个JSON字符串?
  • TS常见类型概述
  • 1. 图的广度优先遍历
  • docker 常用容器创建(自用)
  • 操作系统题目分类总结 | 进程管理 内存管理 文件系统 设备管理
  • 2023/11/26总结
  • 5 动态规划解分割等和子串
  • bootstrap 5 登录、注册页面
  • Java小游戏“简易版王者荣耀”
  • YOLOV7主干改进,使用fasternet轻量化改进主干(完整教程)
  • 人工智能|机器学习——循环神经网络的简洁实现
  • Docker 命令详解
  • hivesql 将json格式字符串转为数组
  • 飞翔的鸟小游戏