📄 list.txt
字号:
#include <stdlib.h>
#include <stdio.h>
#define MAXSIZE 100
typedef struct{
char elem[MAXSIZE]; //用于储存线性表中的元素,元素类型为char;
int len; //线性表的当前表长,即elem数组中已经储存多少个char.
}SqList;
int ListInsert_Sq(SqList *L, int i, char c) //参数i:插入的位置(数组elem中的位置),参数c:要插入的值
{
if (i<1 || i>L->len+1) {
printf("\n插入位置不合理!");
return 0; //判断i的值,若小于1或者大于表长加1,则位置不合理
}
if (L->len == MAXSIZE-1) return -1; //若当前表长等于elem的最大储存量减1,则无法插入
for(int j = L->len; j >= i; --j)
{
L->elem[j+1] = L->elem[j]; //插入位置之后的元素依次后移,且应该先移动最后面的元素
}
L->elem[i] = c;
++L->len; //插入新元素后,当前表长应该加1
printf("您成功插入了:%c\n", c);
return 1;
}
int ListDelete_Sq(SqList *L, int i) //删除elem中位置为i的元素,若能够删除,则后面元素依次左移
{
if (i<1 || i>L->len) return 0; //不合理的位置,无法进行删除
if (L->len == 0) return -1; //线性表为空,无法进行删除
for (int j = i; j <= L->len-1; j++)
{
L->elem[j] = L->elem[j+1]; //从最前面一个元素开始依次左移,直到最后一位元素结束
}
--L->len; //被删除一个元素后,当前表长减1
return 1;
}
int PrintOut(SqList *L) //打印线性表中的元素
{
if (L->len == 0) return 0; //当前表长为0,所以线性表为空,不能做打印操作
printf("线性表中元素为:");
for (int j = 1; j < L->len; j ++) //j为循环变量,遍历数组0位置到L->Len-1这个位置,依次打印
{
printf("%c", L->elem[j]);
}
}
int main()
{
SqList *s = (SqList *)malloc(sizeof(SqList));
s->len = 0;
char NUM[] = "0123456789";
for(int i = 1; i < sizeof(NUM); i ++)
{
ListInsert_Sq(s, i, NUM[i]);
}
PrintOut(s);
printf("\n");
ListDelete_Sq(s,2);
ListDelete_Sq(s,4);
ListInsert_Sq(s, 2, 'u');
PrintOut(s);
free(s);
getchar();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -