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

1.实现逻辑

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

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

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

int delete_tail(sqlist *list)
{

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

	list->len--;
	return 0;


}

3. 完整代码

#include 
#include 
#include 

#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; ilen, 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; ilen; 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;


}

你可能感兴趣的:(数据结构,c语言,linux)