数据结构/顺序表操作/顺序表尾部删除
- 互联网
- 2025-07-21 19:25:31

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; }数据结构/顺序表操作/顺序表尾部删除由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“数据结构/顺序表操作/顺序表尾部删除”