/* sequenceList.c */
/* 顺序表 */
/* 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表中的各项数据元素,用这种存储形式的线性表称为顺序表。 */ #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> #define MAXSIZE 10 /* 顺序表结构 */
typedef struct {
int data[MAXSIZE]; /* 数据列表 */
int last; /* 最后一个元素索引 */
} SeqList; /* 用户界面 */
void interface(void){
puts("+**********************************************+");
puts("+ 0, quit 退出 +");
puts("+ 1, insert 插入 +");
puts("+ 2, delete 删除 +");
puts("+ 3, locate 查找 +");
puts("+ 4, traverse 遍历 +");
puts("+ 5, fill 填充 +");
puts("+ 6, sort(ascend) 排序(升序) +");
puts("+ 7, sort(descend) 排序(降序) +");
puts("+**********************************************+");
} /* 顺序表函数声明 */
SeqList *initSeqList();
int insertSeqList(SeqList*, int, int);
int deleteSeqList(SeqList*, int);
int locateSeqList(SeqList*, int);
void traverseSeqList(SeqList*);
void fillSeqList(SeqList*, int);
void sortSeqList(SeqList*, bool); /* 程序主入口 */
int main(){
SeqList *sl = initSeqList();
int flag, number, index; interface();
for(;;){
printf("Command: ");
scanf("%d", &flag);
switch(flag){
case : printf("Bye!\n"); return ; break;
case :
printf("Enter index and nuumber: ");
scanf("%d %d", &index, &number);
insertSeqList(sl, index, number);
break;
case :
printf("Enter index: ");
scanf("%d", &index);
deleteSeqList(sl, index);
break;
case :
printf("Enter number: ");
scanf("%d", &number);
printf("index: %d\n", locateSeqList(sl, number));
break;
case :
traverseSeqList(sl);
break;
case :
printf("Enter number: ");
scanf("%d", &number);
fillSeqList(sl, number);
break;
case :
sortSeqList(sl, true);
break;
case :
sortSeqList(sl, false);
break;
}
} return ;
} /* 顺序表函数实现*/
/* 初始化顺序表 */
SeqList *initSeqList(){
SeqList *sl = (SeqList*)malloc(sizeof(SeqList));
sl->last = -;
return sl;
}
/* 顺序表的插入 */
int insertSeqList(SeqList *sl, int index, int num){
/* 查看是否顺序表已满 */
if(sl->last==MAXSIZE-){
printf("Sorry, there's no room left in sequence list.\n");
return -;
}
/* 检查插入位置是否合理 */
if(index < || index > MAXSIZE-){
printf("Sorry, wrong position.\n");
return ;
}
/* 插入数据 */
/* 从尾巴开始往前遍历,将index位置(包括index)后面所有元素往后移动一位 */
/* 空出index位置插入num */
for(int i = sl->last; i >= index; i--){
sl->data[i+] = sl->data[i];
}
sl->data[index] = num;
/* 如果last比index大,说明last还是指向最后一位,加一即可 */
/* 反之,则说明last在index前面,需要将last指向index */
if(sl->last>index){
sl->last++;
}else{
sl->last = index;
} return ;
}
/* 删除顺序表元素 */
int deleteSeqList(SeqList *sl, int index){
/* 检查是否为空 */
if(sl->last==-){
printf("Sorry, sequence list is empty.\n");
return ;
}
/* 检查是否在0-L->last范围内 */
if(index < || index > sl->last+){
printf("Sorry, index overflow error!\n");
return -;
}
/* 删除数据 */
/* 从头到尾遍历,找到index,将其后面的所有元素往上提,last-- */
for(int i = index; i < sl->last; i++){
sl->data[i] = sl->data[i+];
}
sl->last--; return ;
}
/* 按值查找顺序表元素 */
int locateSeqList(SeqList *sl, int num){
for(int i = ; i <= sl->last; i++){
if(sl->data[i]==num)
return i;
}
return -;
}
/* 遍历顺序表 */
void traverseSeqList(SeqList *sl){
for(int i = ; i <= sl->last; i++){
printf("%d -> ", sl->data[i]);
}
printf("NULL\n");
}
/* 用num填充顺序表 */
void fillSeqList(SeqList *sl, int num){
for(int i = ; i < MAXSIZE; i++){
sl->data[i] = num;
sl->last = MAXSIZE-;
}
}
/* 排序顺序表 */
void sortSeqList(SeqList *sl, bool ascend){
for(int i = ; i < sl->last; i++){
for(int j = i+; j <= sl->last; j++){
if(ascend){
if(sl->data[i]>sl->data[j]){
sl->data[i] ^= sl->data[j];
sl->data[j] ^= sl->data[i];
sl->data[i] ^= sl->data[j];
}
}else{
if(sl->data[i]<sl->data[j]){
sl->data[i] ^= sl->data[j];
sl->data[j] ^= sl->data[i];
sl->data[i] ^= sl->data[j];
}
}
}
}
}

数据结构——顺序表(sequence list)的更多相关文章

  1. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)

    基础数据结构——顺序表(2) Time Limit: 1000 MS    Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...

  2. hrbust-1545-基础数据结构——顺序表(2)

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) ...

  3. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  4. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  5. 数据结构---顺序表(C++)

    顺序表 是用一段地址连续的存储单元依次存储线性表的数据元素. 通常用一维数组来实现 基本操作: 初始化 销毁 求长 按位查找 按值查找 插入元素 删除位置i的元素 判空操作 遍历操作 示例代码: // ...

  6. 数据结构顺序表Java实现

    Java实现顺序表算法:1:首先我们需要定义我们的接口,关于顺序表的一些基本的操作:顺序表中的操作都有增删改查. //List接口 public interface IList { //返回线性表的大 ...

  7. python算法与数据结构-顺序表(37)

    1.顺序表介绍 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入.删除时需要移动大量元素.顺序表可以分配一段连续的存储空间 ...

  8. 数据结构顺序表中Sqlist *L,&L,Sqlist *&L

    //定义顺序表L的结构体 typedef struct { Elemtype data[MaxSize]: int length; }SqList; //建立顺序表 void CreateList(S ...

  9. Java数据结构——顺序表

    一个线性表是由n(n≥0)个数据元素所构成的有限序列. 线性表逻辑地表示为:(a0,a1,…,an-1).其中,n为线性表的长度,n=0时为空表.i为ai在线性表中的位序号. 存储结构:1.顺序存储, ...

随机推荐

  1. python 机器学习基础教程——第一章,引言

    https://www.cnblogs.com/HolyShine/p/10819831.html # from sklearn.datasets import load_iris import nu ...

  2. Python连载22-调试&单元测试

    一.调试技术 (1)调试流程​:单元测试->集成测试->交测试部 (2)分类:i.静态调试(说白了就是看代码,看看有没有错):ii.动态测试 1.pdb调试 ​相关连接:https://b ...

  3. 博云 x 某农商行 | 银行信息化运维系统升级的最佳实践

    随着银行新一代信息化运维系统建设的推进,应用系统更新换代速度明显提升.数字化转型的发展对银行业务需求的敏捷性提出了越来越高的要求,促进敏捷开发和资源敏捷部署成为大势所趋. 背景 江苏某农村商业银行成立 ...

  4. Kubernetes 动态PV使用

    Kubernetes 动态PV使用 Kubernetes支持动态供给的存储插件:https://kubernetes.io/docs/concepts/storage/storage-classes/ ...

  5. .Net MVC 提示未能加载文件或程序集

    最近在开发.Net MVC程序时,突然出现未能加载文件或程序集的错误, 错误1 错误2 猜测时由于引用了Swagger,导致Swagger依赖的组件版本和现有版本冲突(现在仍未确定是这个原因),浪费了 ...

  6. 配置IIS网站可以下载.apk/.ipa文件

    添加 扩展名是:.apk MIMI类型是:application/vnd.android.package-archive 扩展名是:.ipa MIMI类型是:application/iphone

  7. 关于 L3 缓存行 cacheLIne 的研究!还是对程序有举足轻重的作用!

    https://www.cnblogs.com/PurpleTide/archive/2010/11/25/1887506.html CLR via C# 读书笔记 2-3 Cache Lines a ...

  8. Gitlab的CI/CD初尝试

    初衷:今天公司的前端和测试人员吵起来了.原因是测试埋怨前端人员把Bug的状态更改为已解决,结果代码根本没提交,而前端人员埋怨测试测的太频繁了,需要打几个环境的包不方便.又要改东西又要频繁打包费时间.凡 ...

  9. MySQL问题记录——定义timestamp类型的数据

    MySQL问题记录——定义timestamp类型的数据 摘要:本文主要记录了在使用MySQL的过程中定义timestamp类型数据时遇到的问题以及解决方案. 问题重现 在Windows环境下安装MyS ...

  10. Java并发包——线程安全的Map相关类

    Java并发包——线程安全的Map相关类 摘要:本文主要学习了Java并发包下线程安全的Map相关的类. 部分内容来自以下博客: https://blog.csdn.net/bill_xiang_/a ...