#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
struct SNode {
char *data;
int length;
};
typedef struct SNode node;
typedef struct SNode * SeqList;
int init_list(SeqList list) {
list->data =malloc(MAXSIZE * sizeof(char));
if (!list->data) {
exit(-2);
}
list->length = 0;
return 1;
}
int read_data(SeqList list, int index, char *e) {
if (index < 0 || index >= list->length) {
return 0;
}
*e = list->data[index];
return 1;
}
int insert_data(SeqList list, int index, char data) {
if (list->length == MAXSIZE) {
printf("线性表已满。\n");
return 0;
}
if (index < 0 || index > list->length) {
printf("插入位置不合法。\n");
return 0;
}
for (int i = list->length - 1; i >= index; i--) {
list->data[i+1] = list->data[i];
}
list->data[index] = data;
list->length++;
return 1;
}
int length(SeqList list) {
return list->length;
}
int delete_data(SeqList list, int index) {
if (!list) {
printf("链表为空.\n");
return 0;
}
if (index < 0 || index >= list->length) {
printf("要删除的索引位置不合法。\n");
return 0;
}
for (int i = index; i < list->length; i++) {
list->data[i] = list->data[i+1];
}
list->length--;
return 1;
}
void print_list(SeqList list) {
if (!list) {
printf("该顺序表为空。\n");
return;
}
for (int i = 0; i < list->length; i++) {
printf("第 %d 个元素是:%c \n", i, list->data[i]);
}
}
int main(int argc, const char * argv[]) {
struct SNode list;
init_list(&list);
for (int i = 0; i < 5; i++) {
insert_data(&list, i, 'a' + i);
}
int len = length(&list);
printf("该顺序表长度为:%d\n", len);
print_list(&list);
char ch;
read_data(&list, 3, &ch);
printf("索引为 3 的元素是 %c.\n", ch);
delete_data(&list, 3);
len = length(&list);
printf("删除元素后, 表长为:%d \n", len);
print_list(&list);
printf("插入新元素 Z \n");
insert_data(&list, 2, 'Z');
print_list(&list);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现