顺序表 接口的实现 以及遇到的小问题

话不多说 来看一张图

在这里插入图片描述

在这里插入图片描述

遇到这个报错的时候我都懵了 ,这啥玩意啊 ,检查来检查去,也不应该会是这种报错啊 , 后来猜了下是不是 跟库函数冲突了 ,试着修改了下果然是。

在这里插入图片描述

修改之后 果然正常了

那么问题来了 我去们去看下库函数是不是真的有remove

那是哪的冲突呢 ? 当然是stdio.h头文件呀,

在这里插入图片描述

发现确实有 还是一个算块的

,what? 我看到了什么 ,下面不是也有一个大写的Remove 吗 ?
点开之后 ,我发现,它是个操作文件的。跟咱的参数不匹配 ,当然形成了重载
在这里插入图片描述

最后 附上一小份顺序表的方法的实现的代码吧

#include"stdio.h"
#include"windows.h"
#include “assert.h”
#include"stdlib.h"
#define N 10
typedef int Type;
typedef struct Seqlist
{
Type* _a;
size_t _size;
size_t _capacity;
}Seqlist;

void check_capacity(Seqlist* s);
void erase(Seqlist* s, size_t pos);
void Remove(Seqlist* s, Type data);
void Init(Seqlist* s);
void push_back(Seqlist* s, Type data);
void pop_back(Seqlist* s);
void push_front(Seqlist* s, Type data);
void pop_front(Seqlist* s);
void insert(Seqlist* s, size_t pos, Type data);
int find(Seqlist* s, Type data);
void print(Seqlist* s);

void Init(Seqlist* s)
{
s->_a = NULL;
s->_size = 0;//有效元素个数
s->_capacity = 0;
}

void push_back(Seqlist* s,Type data)
{
assert(s->_a);
check_capacity(s);
s->_a[s->_size] = data;
++(s->_size);
}
void check_capacity(Seqlist* s)
{
if (s->_capacity == s->_size)//满了
{
int newcapacity = s->_capacity == 0 ? 10 : 1.5 * s->_capacity;
s->_a = realloc(s->_a,sizeof(Seqlist) * newcapacity);//重新接受地址
s->_capacity = newcapacity;//记录新容量
}
}
void pop_back(Seqlist* s)
{
assert(s && s->_size > 0);
s->_a[s->_size - 1] = ‘\0’;
s->_size–;
}
void push_front(Seqlist* s,Type data)
{
check_capacity(s);
int size = s->_size;
while (s->_size)
{
s->_a[s->_size ] = s->_a[s->_size-1];
s->_size–;
}
s->_size = size + 1;
s->_a[s->_size - 1] = data;//插入元素
}
void pop_front(Seqlist* s)
{
assert(s &&s->_size>0);//不为空
//int size = s->_size;
int i = 0;
while (i_size-1)
{
s->_a[i] = s->_a[i + 1];
++i;
}
s->_size–;
}
int find(Seqlist* s,Type data)
{
assert(s);
int i = 0;
while (i < s->_size)
{
if (s->_a[i] == data)
{
printf(“success , order is %d\n”,i);
return i;
}
++i;

}
printf("find   fasle\n");
return  -1;

}
void erase(Seqlist* s,size_t pos)
{
assert(s && pos>0 && pos_size);
int tmp = pos;
while (tmp+1_size)
{
s->_a[tmp] = s->_a[tmp + 1];
++tmp;
}
–(s->_size);
}
void insert(Seqlist* s, size_t pos, Type data)
{
assert(pos <= s->_size);
check_capacity(s);
if (s->_size == 0)
{
s->_a[0] = data;
++(s->_size);
}
else
{
for (int i = (int)s->_size; i >(int)pos; --i)
{
s->_a[i] = s->_a[i-1];
// 33
s->_size++;
}
s->_a[pos] = data;
s->_size++;
}
}

//移除某个位置

void Remove( Seqlist* s, Type data)
{
assert(s);
for (size_t i = 0; i < s->_size; ++i)
{
if (s->_a[i] == data)
erase(s,i);
s->_size–;
}
}
void print(Seqlist* s)
{
printf(“元素为:”);
for (size_t i = 0; i < s->_size; ++i)
{
printf("%d\t",s->_a[i]);
}
printf("\n");
printf(“共%d个有效元素\n”, s->_size);
printf(“当前总容量为%d\n”, s->_capacity);
}

void Test1()
{
Seqlist s;
Init(&s);//初始化
print(&s);
int a = 10;
insert(&s,0,a);
printf("\n");
print(&s);
push_back(&s, 1);
push_back(&s, 2);
push_back(&s, 3);
push_back(&s, 4);
print(&s);
erase(&s,3);
print(&s);
push_front(&s, 12);
print(&s);
pop_front(&s);
print(&s);
int ret =find(&s, 4);
//print(&s);
push_back(&s, 1);
push_back(&s, 2);
push_back(&s, 3);
push_back(&s, 4);
push_back(&s, 1);
push_back(&s, 2);
push_back(&s, 3);
push_back(&s, 4);
print(&s);
}

int main()
{
Test1();
//Test2();
system(“pause”);
return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值