|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
// 小甲鱼 的 数据结构与算法
// 线性表的 顺序存储结构 C++ 实现
#include <iostream>
const int MAXSIZE = 30;
typedef int Elemtype;
//创建链表结构
struct sqlist
{
Elemtype sdata[MAXSIZE];
int length ;
};
//初始化
void list_init(sqlist *s)
{
s->length = 0;
s->sdata[s->length] = 0;
}
//从尾部插入元素
void stern_insert(sqlist *s,Elemtype e)
{
s->sdata[s->length] = e;
s->length++;
s->sdata[s->length] = '\0';
}
//从头部插入元素
void head_insert(sqlist *s, Elemtype e)
{
for (int i = s->length; i > 0; --i)
{
s->sdata[i] = s->sdata[i - 1];
}
s->sdata[0] = e;
s->length++;
s->sdata[s->length] = '\0';
}
//从任意位置插入元素
void optional_insert(sqlist *s, Elemtype e, int x)
{
if (x <= s->length) //判断X是否大于length
{
for (int i = s->length; i > x; i--) // 依次将数据后移一位
{
s->sdata[i] = s->sdata[i - 1];
}
s->sdata[x] = e; // 在指定位置插入 数据
s->length++; // 数据长度加1
s->sdata[s->length] = '\0';
}
}
//删除元素
int optional_delete(sqlist *s, Elemtype e)
{
if (s->length ==0)
{
return -1; // 链表中没有元素
}
int x = 0;
//遍历整个结构,找到要删除的数据的位置 返回给x
for (int i = 0; i< s->length;i++)
{
if (s->sdata[i] == e)
{
x = i;
break;
}
else
{
return -1; // 链表中没有你要删除的元素
}
}
for (int i = x; i < s->length; i++)
{
s->sdata[i] = s->sdata[i + 1];
}
s->length--;
s->sdata[s->length] = '\0';
return 0;
}
int main()
{
sqlist s;
list_init(&s);
stern_insert(&s, 3);
stern_insert(&s, 4);
stern_insert(&s, 5);
head_insert(&s, 2);
head_insert(&s, 1);
optional_insert(&s, 6, 5);
optional_delete(&s, 2);
return 0;
} |
|