动态顺序表的实现(修改)

一、头文件:SeqList.h

1.1.作用:包含所有结构体定义和函数声明
1.2.代码

代码如下:

#pragma once

#include<stdio.h>

#include<stdlib.h>

#include<assert.h>

typedef int SLDataType;

typedef struct SeqList {

SLDataType* a;

int size;

int capacity;

}SL;

void SLCheckCapacity(SL* sl);

void SLprint(SL* sl);

void SLInit(SL* sl);

void SLPushFront(SL* sl, SLDataType x);

void SLPushBack(SL* sl, SLDataType x);

void SLInsert(SL* sl, int pos, SLDataType x);

void SLRemoveAll(SL* sl, SLDataType x);

void SLPopFront(SL* sl);

void SLPopBack(SL* sl);

void SLErase(SL* sl, int pos);

//查找元素

int SLFind(SL* sl, SLDataType x);
//修改指定位置的数据
void SLModify(SL* sl, int pos, SLDataType);

二、实现文件:3-20.c

2.1.作用:定义结构体和所有函数的接口
2.2.代码

代码如下:

//修改指定位置的数据

void SLModify(SL* sl, int pos, SLDataType x){

assert(sl);

assert(pos >= 0 && pos <= sl->size);

sl->apos = x;

}

三、测试文件:test.c

3.1.作用:程序的入口,演示如何使用上述所有功能。
3.2.代码

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include"SeqL.h"

void SLTest01() {

SL sl;

SLInit(&sl);

printf("------1.测试头插-----");

SLPushFront(&sl, 0);

SLPrint(&sl);

printf("------2.测试尾插-----");

SLPushBack(&sl, 1);

SLPushBack(&sl, 2);

SLPushBack(&sl, 3);

SLPushBack(&sl, 4);

SLPushBack(&sl, 5);

SLPrint(&sl);

printf("------3.测试任意位置插入-----");

SLInsert(&sl, 2, 99);

SLPrint(&sl);

printf("------4.删除所有的2------");

SLPushBack(&sl, 2);

SLPushBack(&sl, 2);

SLPushBack(&sl, 2);

SLPushBack(&sl, 2);

SLPushBack(&sl, 6);

printf("删除前:");

SLPrint(&sl);

printf("正在删除所有值为2的元素....\n");

SLRemoveAll(&sl, 2);

printf("删除后: ");

SLPrint(&sl);

printf("-------头删-------");

SLPopFront(&sl);

SLPrint(&sl);

printf("-------尾删-------");

SLPopBack(&sl);

SLPrint(&sl);

printf("-------删除指定位置-------");

SLErase(&sl, 2);

SLPrint(&sl);

printf("------5.测试查找-----------");

SLFind(&sl, 3);

if (SLFind(&sl, 3)!=-1) {

SLPrint(&sl, 3);

}

else {

printf("没有找到");

}

SLModify(&sl, 1, 88);

SLPrint(&sl);

}

int main() {

SLTest01();

return 0;

}

相关推荐
春日见8 分钟前
vscode的AI编程插件推荐:
大数据·ide·vscode·算法·机器学习·编辑器·ai编程
blxr_12 分钟前
力扣hot100路径总和Ⅲhttps://leetcode.cn/problems/path-sum-iii/
算法·leetcode·职场和发展
noipp30 分钟前
【无标题】
c语言·数据结构·c++·算法
渡众机器人44 分钟前
第八届全球校园人工智能算法精英大赛-算法应用赛-渡众机器人智能体对抗挑战赛规则
人工智能·算法·机器人·自动驾驶·自主导航·对抗赛
郝学胜-神的一滴1 小时前
完全二叉树与堆底层原理深度剖析 | 手写C++大顶堆实现
java·开发语言·数据结构·c++·python·算法
青山木1 小时前
Hot 100 --- 缺失的第一个正数
算法·leetcode·哈希算法
农民小飞侠1 小时前
[leetcode] 165. Compare Version Numbers
java·算法·leetcode
装不满的克莱因瓶1 小时前
掌握语义分割经典模型 FCN——从像素分类到端到端分割的奠基之作
人工智能·python·深度学习·算法·机器学习·分类·数据挖掘
学计算机的计算基2 小时前
链表算法上篇:LeetCode 206/234/141/142/160/21 题解与易错点
java·笔记·算法·链表
大白话_NOI2 小时前
【洛谷 P2678】 [NOIP2015 提高组] 跳石头 超详细题解
c++·算法