c语言实现顺序表源程序,C语言实现静态顺序表的实例详解

C语言实现静态顺序表的实例详解

线性表

定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。

接下来看看静态的顺序表,直接上代码:

SeqList.h

#define _CRT_SECURE_NO_WARNINGS 1

#ifndef __SEQLIST_H__

#define __SEQLIST_H__

#include

#include

#include

#include

#define MAX 10

typedef int DataType;

typedef struct SeqList

{

DataType data[MAX];

int sz;

}SeqList,*pSeqList;

void InitSeqList(pSeqList ps);

void PushBack(pSeqList ps, DataType d);

void PopBack(pSeqList ps);

void PushFront(pSeqList ps, DataType d);

void PopFront(pSeqList ps);

void Display(const pSeqList ps);

int Find(pSeqList ps, DataType d);

void Insert(pSeqList ps, DataType d, int pos);

void Remove(pSeqList ps, DataType d);

void RemoveAll(pSeqList ps, DataType d);

void Reverse(pSeqList ps);

void Sort(pSeqList ps);

int BinarySearch(pSeqList ps, DataType d);

#endif//__SEQLIST_H__

SeqList.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "SeqList.h"

void InitSeqList(pSeqList ps)

{

assert(ps);

ps->sz = 0;

memset(ps->data, 0, sizeof(DataType)*MAX);

}

void PushBack(pSeqList ps, DataType d)

{

assert(ps);

if (ps->sz == MAX)

{

return;

}

ps->data[ps->sz] = d;

ps->sz++;

}

void PopBack(pSeqList ps)

{

assert(ps);

if (ps->sz == 0)

{

return;

}

ps->sz--;

}

void PushFront(pSeqList ps, DataType d)

{

int i = 0;

assert(ps);

for (i = ps->sz; i >= 1; i--)

{

ps->data[i] = ps->data[i - 1];

}

ps->data[0] = d;

ps->sz++;

}

void PopFront(pSeqList ps)

{

int i = 0;

assert(ps);

for (i = 0; i < ps->sz; i++)

{

ps->data[i] = ps->data[i + 1];

}

ps->sz--;

}

void Display(const pSeqList ps)

{

int i = 0;

assert(ps);

for (i = 0; i < ps->sz; i++)

{

printf("%d ", ps->data[i]);

}

printf("\n");

}

int Find(pSeqList ps, DataType d)

{

int i = 0;

assert(ps);

for (i = 0; i < ps->sz; i++)

{

if (ps->data[i] == d)

{

return i;

}

}

return -1;

}

void Insert(pSeqList ps, DataType d, int pos)

{

int i = 0;

assert(ps);

if (ps->sz == MAX)

{

return;

}

//方式一

//for (i = ps->sz - 1; i >= pos; i--)

//{

// ps->data[i + 1] = ps->data[i];

//}

//方式二

memmove(ps->data + pos + 1, ps->data + pos, sizeof(DataType)*(ps->sz - pos));

ps->data[pos] = d;

ps->sz++;

}

void Remove(pSeqList ps, DataType d)

{

int i = 0;

int pos = 0;

assert(ps);

pos = Find(ps, d);

if (pos != -1)

{

for (i = pos; i < ps->sz; i++)

{

ps->data[i] = ps->data[i + 1];

}

ps->sz--;

}

}

void RemoveAll(pSeqList ps, DataType d)

{

int i = 0;

int pos = 0;

assert(ps);

pos = Find(ps, d);

while ((pos = Find(ps, d)) != -1)

{

for (i = pos; i < ps->sz; i++)

{

ps->data[i] = ps->data[i + 1];

}

ps->sz--;

}

}

void Reverse(pSeqList ps)

{

int left = 0;

int right = ps->sz - 1;

assert(ps);

while (left < right)

{

DataType tmp = ps->data[right];

ps->data[right] = ps->data[left];

ps->data[left] = tmp;

left++;

right--;

}

}

void Sort(pSeqList ps)

{

int i = 0;

int j = 0;

assert(ps);

for (i = 0; i < ps->sz; i++)

{

for (j = 0; j < ps->sz - i - 1; j++)

{

if (ps->data[j]>ps->data[j + 1])

{

DataType tmp = ps->data[j];

ps->data[j] = ps->data[j + 1];

ps->data[j + 1] = tmp;

}

}

}

}

int BinarySearch(pSeqList ps, DataType d)

{

int left = 0;

int right = ps->sz - 1;

while (left <= right)

{

int mid = left - ((left - right) >> 1);

if (d > ps->data[mid])

{

left = mid + 1;

}

else if (d < ps->data[mid])

{

right = mid - 1;

}

else

{

return mid;

}

}

return -1;

}

test.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "SeqList.h"

void test1()

{

SeqList list;

InitSeqList(&list);

PushBack(&list, 1);

PushBack(&list, 2);

PushBack(&list, 3);

PushBack(&list, 4);

Display(&list);

PopBack(&list);

Display(&list);

PopBack(&list);

Display(&list);

PopBack(&list);

Display(&list);

PopBack(&list);

Display(&list);

}

void test2()

{

int pos = 0;

SeqList list;

InitSeqList(&list);

PushFront(&list, 1);

PushFront(&list, 2);

PushFront(&list, 3);

PushFront(&list, 2);

PushFront(&list, 4);

PushFront(&list, 2);

Display(&list);

pos = Find(&list, 3);

printf("%d\n", list.data[pos]);

PopFront(&list);

Display(&list);

PopFront(&list);

Display(&list);

PopFront(&list);

Display(&list);

PopFront(&list);

Display(&list);

}

void test3()

{

int pos = 0;

SeqList list;

InitSeqList(&list);

PushFront(&list, 1);

PushFront(&list, 2);

PushFront(&list, 3);

PushFront(&list, 2);

PushFront(&list, 4);

PushFront(&list, 2);

Display(&list);

Insert(&list, 6, 2);

Display(&list);

Remove(&list, 1);

Display(&list);

RemoveAll(&list, 2);

Display(&list);

}

void test4()

{

int pos = 0;

SeqList list;

InitSeqList(&list);

PushFront(&list, 1);

PushFront(&list, 2);

PushFront(&list, 3);

PushFront(&list, 2);

PushFront(&list, 4);

Display(&list);

Reverse(&list);

Display(&list);

Sort(&list);

Display(&list);

pos = BinarySearch(&list, 3);

printf("%d\n", list.data[pos]);

}

int main()

{

test4();

system("pause");

return 0;

}

以上使用C语言动态顺序表的实现如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

证明最小码距与纠检错图像_最小码距和检错纠错能力关系

最小码距和检错纠错能力关系一、码距&#xff1f;码距就是两个码字C1与C2之间不同的比特数。如&#xff1a;1100与1010的码距为2;1111与0000的码距为4。一个编码系统的码距就是整个编码系统中任意(所有)两个码字的最小距离。若一个编码系统有四种编码分别为&#xff1a;0000&am…

mongoose 批量修改字段_WordPress图片路径批量替换方法

不少数站长在使用WordPress博客或者搬家时&#xff0c;需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题。总结一下WP图片路径批量替换的过程&#xff0c;方便有此类需求的站长们学习。什么情况下批量替换图片路径1、更换了网站域名有许多网站建设初期都随便选择…

c语言 静态变量 初始化,c – 静态变量初始化两次

考虑到我在编译单元中有一个静态变量,最后在静态库libA中.然后我有另一个编译单元访问这个变量,最终在一个共享库libB.so(所以libA必须链接到libB).最后,我有一个主要功能也直接从A访问静态变量,并具有对libB的依赖(所以我链接到libA和libB).我然后观察,静态变量被初始化了两次…

ebs 供应商地点信息_供应商,地址,业务实体,地点关联银行账户

在此记录一下自己学习过程。新手&#xff0c;请多多指教&#xff0c;谢谢。最近客户有需求&#xff0c;找出供应商对应的银行信息&#xff0c;查看了下网上帖子&#xff0c;发现都是从供应商及供应商地点层发起&#xff0c;去查找对应的银行信息&#xff0c;但是&#xff0c;供…

c语言递归函数检测回文,递归法判断回文字符串,急用

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*--------用线性表存储字符串&#xff0c;结合堆栈判断回文(关键判断个数为奇或偶&#xff0c;奇跳过中间数据)---------*/#include #include #define ok 1;#define error 0;typedef char elemtype;typedef struct lnode{lnode *n…

python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器!

Free Python Games非常适合学生&#xff0c;它不仅具有高度的组织性和灵活性&#xff0c;而且能够激发人们探索和理解能力。--Terri FurtonFree Python Games在轻松的环境中把游戏和学习结合在一起&#xff0c;从而减轻了编程过程中的压力。--Brett Bymaster...贪吃蛇、迷宫、吃…

r roc函数_画ROC曲线的R包总结

原标题&#xff1a;画ROC曲线的R包总结作者&#xff1a; Joseph Rickert原文链接&#xff1a;https://rviews.rstudio.com/2019/03/01/some-r-packages-for-roc-curves/在这篇文章中&#xff0c;我将描述如何在CRAN中搜索绘制ROC曲线的包&#xff0c;并强调六个有用的包。虽然一…

c语言出圈游戏课设报告,c语言作业 出圈游戏

#include//头函数#include#include#define SIZE 100struct SeqList{int num;char name[10];};int menu_select();//函数声明部分void Joseph1();void Joseph2();void Joseph3();void Joseph4();void Joseph(struct SeqList *p,int length);void main() //主要程序段{printf(&qu…

laravel框架中文手册_node.js 后端框架star 排名 2020年11月更新,fastify 超 egg

发布时间以首个版本发布&#xff08;0.x&#xff09;为准。第一名&#xff1a; express 50.8k &#xff08;2010年1月发布&#xff09; 目前star 和下载量最高的老牌框架。https://github.com/expressjs/express​github.com第二名&#xff1a;meteor 42.1k &#xff08;2012年…

c语言~991|4等于多少,复习C语言9-helloworld3000-ChinaUnix博客

关于位操作1. 不使用中间变量&#xff0c;交换a、b的值。如使用&#xff1a;a a b; b a - b; a a - b;则当a、b都比较大时&#xff0c;ab的值可能会溢出。而采用下述方法则没有溢出越界的问题&#xff1a;a a ^ b;b a ^ b;a a ^ b;证明其实很简单&#xff0c;只要熟悉二…

python音乐下载器交互界面_基于Python实现下载网易音乐代码实例

代码如下 # 爬取网易音乐 import requests from bs4 import BeautifulSoup import urllib.request headers {"origin": "https://music.163.com", "referer": "https://music.163.com/", "user-agent": "Mozilla/5.0 …

2020年度工作计划_2020最新年度个人工作计划(精选3篇)

时间稍纵即逝&#xff0c;前方等待着我们的是新的机遇和挑战&#xff0c;不妨坐下来好好写写工作计划吧。工作计划怎么写才能发挥它最大的作用呢&#xff1f;下面是小编为大家整理的2020最新年度个人工作计划(精选3篇)&#xff0c;希望能够帮助到大家。年度个人工作计划1转眼间…

c语言中把各位上为奇数的数取出,下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。 - 赏学吧...

下列给定程序中函数fun()的功能是&#xff1a;将长整型数中每一位上为奇数的数依次取出&#xff0c;构成一个新数放在冲。高位仍在高位&#xff0c;低位仍在低位。例如当s中的数为87653142时&#xff0c;t中的数为7531。请改正函数fun()中的错误&#xff0c;使它能得出正确的结…

java 格式化字符串_Java入门 - 语言基础 - 14.String类

1.概述字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了 String 类来创建和操作字符串。2.创建字符串创建字符串最简单的方式如下:String greeting "光束云";在代码中遇到字符串常量时&#xff0c;这里的值是 "光束…

c语言按照姓名查询员工信息,输入10个职工信息,按号码大小排序,再使用查找函数找职工的姓…...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include //主函数int main(){int sort(int num[10],char name[10][10],int n);int survey(int num[10]);int num[10];int n10;char name[10][10];int i;for(i0;i<9;i){printf("请输入第%d个职工的工号\n",i1…

decimal是什么类型_SQLMysql数据类型

一 前言每个数据库的数据类型从来都不是一个简单的数据结构&#xff0c;特别是使用不同的数据库&#xff0c;不同的引擎&#xff0c;其支持的数据类型也不一样&#xff0c;选择那种数据类型作为字段类型对数据库的性能也是天差地别&#xff0c;故对数据类型有个全面的认知&…

python 栈和队列_python 栈和队列的基本实现

python中的列表结构可以用来实现栈和队列。 【栈】&#xff1a; 栈是一种数据结构&#xff0c;具有先入后出的特点&#xff0c;并且栈的所有操作只能在某一端进行&#xff0c;能进行操作的一端的第一个元素称为栈顶&#xff0c;另一端的第一个元素称为栈底 栈的五种基本方法&am…

e480win7显卡驱动_e480安装了windows7显卡驱动装不上

展开全部一、显卡驱动程序启用驱动程序签名功能启用驱动程序签名功能是成功安装显卡驱动的第e68a84e8a2ad3231313335323631343130323136353331333433663031一步&#xff0c;因为只有启动了驱动程序签名&#xff0c;才能阻止系统的自动安装驱动程序功能&#xff0c;才可以抢在系…

android oat如何提取dex文件字节码,Android: 使用oatdump反编译oat文件

网上经常看到有通过apktool将apk中的dex反编译成smali格式的文件&#xff0c;以便分析功能实现与破—解&#xff0c;确没怎么看到oat文件反通过oatdump反编译的&#xff0c;所以就写了一篇这样的文档。声明一下oat文件也是可以反编译的。本来想着通过oatdump处理之后&#xff0…

mybatis依赖_Spring Boot2 系列教程(二十一)整合 MyBatis

前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate&#xff0c;JdbcTemplate 虽然简单&#xff0c;但是用的并不多&#xff0c;因为它没有 MyBatis 方便&#xff0c;在 SpringSpringMVC 中整合 MyBatis 步骤还是有点复杂的&#xff0c;要配置多个 Bea…