当前位置: 首页> 教育> 幼教 > 网店运营推广实训系统_上海行业门户网站建设应用_网络宣传平台有哪些_成品视频直播软件推荐哪个好用

网店运营推广实训系统_上海行业门户网站建设应用_网络宣传平台有哪些_成品视频直播软件推荐哪个好用

时间:2025/7/11 20:04:26来源:https://blog.csdn.net/weixin_45150754/article/details/147542182 浏览次数:0次
网店运营推广实训系统_上海行业门户网站建设应用_网络宣传平台有哪些_成品视频直播软件推荐哪个好用

在实现顺序表的时候,一定要注意下标,一不小心就会出错;

下面是实现顺序表的代码:

//头文件----SeqList.h#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int SLDataType;
typedef struct seqlist
{SLDataType* arr;int sz;//计算元素个数int capacity;//计算空间的容量
}SL;//为什么要用指针呢?因为形参是实参的临时拷贝,传地址是要对参数进行修改的void SLInit(SL* ps);//顺序表初始化
void SLDestroy(SL* ps);//顺序表销毁
void SLPrint(SL s);//打印顺序表
void SLCheckCapacity(SL* ps);//空间不够申请空间
//尾部插⼊和删除 
void SLPushBack(SL* ps, SLDataType x);
void SLPopBack(SL* ps);
//头部插⼊和删除
void SLPushFront(SL* ps, SLDataType x);
void SLPopFront(SL* ps);
//指定位置之前插⼊和删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);
//查找指定的元素
int SLFind(SL* ps, SLDataType x);

#pragma once的作用是防止后续的代码多次包含该文件。 

//源文件-------SeqList.c
#include"SeqList.h"void SLInit(SL* ps)//顺序表初始化
{ps->arr = NULL;ps->sz = 0;ps->capacity = 0;
}
void SLDestroy(SL* ps)//顺序表销毁
{if(ps->arr!=NULL){free(ps->arr);}ps->arr = NULL;ps->sz = 0;ps->capacity = 0;
}
void SLPrint(SL s)//打印顺序表
{for (int i = 0; i < s.sz; i++){printf("%d ",s.arr[i]);}printf("\n");
}
void SLCheckCapacity(SL* ps)//空间不够申请空间
{if (ps->sz == ps->capacity){int newcapacity = ps->capacity==0 ? 4 : 2 * ps->capacity;SLDataType* tmp = (SLDataType*)malloc(sizeof(SL) * newcapacity);if (tmp == NULL){perror("malloc fail");return;}ps->arr = tmp;ps->capacity = newcapacity;}
}
//尾部插⼊和删除 
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);//等价于ps!=nullSLCheckCapacity(ps);ps->arr[ps->sz] = x;ps->sz++;
}
void SLPopBack(SL* ps)
{assert(ps);assert(ps->sz);//避免sz==0.所以要断言一下ps->sz--;
}
//头部插⼊和删除
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);int i = 0;for (int i = ps->sz; i > 0; i--){ps->arr[i] = ps->arr[i-1];//要注意下标}ps->arr[i] = x;ps->sz++;
}
void SLPopFront(SL* ps)
{assert(ps);int i = 0;for (i = 0; i < ps->sz; i++){ps->arr[i] = ps->arr[i + 1];}ps->sz--;
}
//指定位置之前插⼊和删除数据
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos>=0&&pos<=ps->sz);//pos是指定下标位置(大于等于0且小于有效数据个数)SLCheckCapacity(ps);int i = 0;for (i = ps->sz; i >pos; i--){ps->arr[i] = ps->arr[i-1];}ps->arr[pos] = x;ps->sz++;
}
void SLErase(SL* ps, int pos)
{assert(ps);assert(pos >= 0 && pos <= ps->sz);int i = 0;for (i = pos; i < ps->sz-1; i++){ps->arr[i ] = ps->arr[i+1];}ps->sz--;
}
//查找指定的元素
int SLFind(SL* ps, SLDataType x)
{assert(ps);int i = 0;for (i = 0; i < ps->sz; i++){if (ps->arr[i] == x){return i;}}return -1;
}

函数传参使用地址是因为形参是实参的临时拷贝,传址是需要对值进行修改。在写的过程中一定要注意下标,出错了好多次。

关键字:网店运营推广实训系统_上海行业门户网站建设应用_网络宣传平台有哪些_成品视频直播软件推荐哪个好用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: