web中如何实现实现顺序表
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要为大家展示了"web中如何实现实现顺序表",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"web中如何实现实现顺序表"这篇文章吧。seqlist.
千家信息网最后更新 2025年11月14日web中如何实现实现顺序表
这篇文章主要为大家展示了"web中如何实现实现顺序表",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"web中如何实现实现顺序表"这篇文章吧。
seqlist.h
#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include#include #include #define INIT_SIZE 2 #define ADD_SIZE 3 typedef int DataType; typedef struct Seqlist { DataType *data; int size; //当前空间存储的元素个数 int capacity; //当前空间所能存储的最大容量 }Seqlist,*pSeqlist; void InitSeqlist(pSeqlist pSeq); void DestorySeqlist(pSeqlist pSeq); void PushBack(pSeqlist pSeq,DataType x); void PopBack(pSeqlist pSeq); void PushFront(pSeqlist pSeq,DataType x); void PopFront(pSeqlist pSeq); void Remove(pSeqlist pSeq,DataType x); void RemoveAll(pSeqlist pSeq,DataType x); void BubbleSort(pSeqlist pSeq); void InsertSort(pSeqlist pSeq); void SelectSort(pSeqlist pSeq); int BinarySearch(pSeqlist pSeq,DataType x); void Erase(pSeqlist pSeq,int pos); void PrintSeqlist(pSeqlist pSeq); #endif //SEQLIST_D_H__
seqist.c
#include"seqlist.h"void InitSeqlist(pSeqlist pSeq) { pSeq->data = (DataType *)malloc(INIT_SIZE*sizeof(DataType)); if (pSeq->data == NULL) { printf("out of memory\n"); exit(1); } pSeq->size = 0; pSeq->capacity = INIT_SIZE; //将容量置为当前空间所能存储的最大值 } void DestorySeqlist(pSeqlist pSeq) { free(pSeq->data); pSeq->data = NULL; pSeq->size = 0; pSeq->capacity = 0; } void CheckCapacity(pSeqlist pSeq) //查看当前空间是否已满 { assert(pSeq); if (pSeq->size == pSeq->capacity) //如果满了则进行扩容 { DataType *tmp = NULL; tmp = (DataType *)realloc(pSeq->data, (pSeq->capacity += ADD_SIZE)*sizeof(DataType)); if (NULL == tmp) { printf("out of memory\n"); exit(1); } pSeq->data = tmp; } } void PushBack(pSeqlist pSeq, DataType x) { assert(pSeq); CheckCapacity(pSeq); //只要插入元素,首先就要检查空间是否以满 pSeq->data[pSeq->size++] = x; //插入元素后size也要变化 } void PopBack(pSeqlist pSeq) { assert(pSeq); if (pSeq->size == 0) //异常情况,表已空 { printf("表已空\n"); return; } pSeq->size--; } void PushFront(pSeqlist pSeq, DataType x) { int i = 0; assert(pSeq); CheckCapacity(pSeq); //只要插入元素,首先就要检查空间是否以满 for (i = pSeq->size; i > 0; i--) //从后往前先将数据移动 { pSeq->data[i] = pSeq->data[i-1]; } pSeq->data[0] = x; pSeq->size++; } void PopFront(pSeqlist pSeq) { int i = 0; assert(pSeq); if (pSeq->size == 0) //异常情况,表空 { printf("表已空\n"); return; } for (i = 0; i < pSeq->size-1; i++) //直接从第二个元素依次向前覆盖 { pSeq->data[i] = pSeq->data[i + 1]; } pSeq->size--; } void Remove(pSeqlist pSeq, DataType x) //删除第一个出现的x { int i = 0; int j = 0; assert(pSeq); for (i = 0; i < pSeq->size; i++) { if (pSeq->data[i] == x) { for (j = i; j < pSeq->size-1; j++) //删除的时候从这个元素的后面向前覆盖 { pSeq->data[j] = pSeq->data[j + 1]; } pSeq->size--; return; } } } void RemoveAll(pSeqlist pSeq, DataType x) { int i = 0; int j = 0; assert(pSeq); for (i = 0; i < pSeq->size; i++) { if (pSeq->data[i] == x) { for (j = i; j < pSeq->size - 1; j++) //删除的时候从这个元素的后面向前覆盖 { pSeq->data[j] = pSeq->data[j + 1]; } pSeq->size--; } } } void BubbleSort(pSeqlist pSeq) { int flag = 0; int i = 0; int j = 0; int k = pSeq->size-1; assert(pSeq); for (i = 0; i < pSeq->size - 1; i--) { int m = 0; flag = 1; //将标记置1 for (j = 0; j < k; j++) { if (pSeq->data[j]>pSeq->data[j + 1]) { DataType tmp = pSeq->data[j]; pSeq->data[j] = pSeq->data[j + 1]; pSeq->data[j + 1] = tmp; flag = 0; m = j; //记录最后一次交换的位置 } } if (flag) //标记位1表示已经有序 { return; } m = k; //将k设置成最后一次交换的位置 } } void InsertSort(pSeqlist pSeq) //插入排序 { int i = 0; int j = 0; assert(pSeq); for (i = 1; i < pSeq->size; i++) { DataType tmp = pSeq->data[i]; for (j = i-1; j >=0; j--) { if (pSeq->data[j]>tmp) { pSeq->data[j+1] = pSeq->data[j]; } else { break; } } pSeq->data[j+1] = tmp; } } void SelectSort(pSeqlist pSeq) { int i = 0; int j = 0; int k = 0; assert(pSeq); for (i = 0; i < pSeq->size; i++) { k = i; for (j = i + 1; j < pSeq->size; j++) { if (pSeq->data[k]>pSeq->data[j]) { k = j; } } if (k != i) { DataType tmp = pSeq->data[k]; pSeq->data[k] = pSeq->data[i]; pSeq->data[i] = tmp; } } } int BinarySearch(pSeqlist pSeq, DataType x) { int left = 0; int right = pSeq->size - 1;int mid=0; assert(pSeq); mid = (left&right) + ((left^right) >> 1); //求平均值 while (left <= right) { if (pSeq->data[mid]>x) { right = mid - 1; } else if (pSeq->data[mid] < x) { left = mid + 1; } else { return mid; } } return -1; } void Erase(pSeqlist pSeq, int pos) { int i = 0; assert(pSeq); if (pos>= pSeq->size&&pos < 0) { printf("删除位置不合法\n"); return; } for (i = pos; i < pSeq->size - 1; i++) //从pos之后依次向前覆盖 { pSeq->data[i] = pSeq->data[i + 1]; } pSeq->size--; } void PrintSeqlist(pSeqlist pSeq) { int i = 0;assert(pSeq); if (pSeq->size == 0) { printf("表为空\n"); return; } for (i = 0; i < pSeq->size; i++) { printf("%d ", pSeq->data[i]); } printf("\n"); }test.c
#include"seqlist.h" void menu() { printf("0.exit 1.PrintSeqlist \n"); printf("2.InitSeqlist 3.PushBack \n"); printf("4.Popback 5.PushFornt \n"); printf("6.PopFornt 7.Erase \n"); printf("8.Remove 9.RemoveAll \n"); printf("10.BubbleSort 11.BinarySearch\n"); printf("12.DestorySeqlist 13.InsertSort \n"); printf("14.SelectSort \n"); printf("请输入:>"); } void test(pSeqlist pSeq) { DataType x = 0; int n = 0; int pos = 0;int ret=0; while (1) { menu(); scanf("%d", &n); switch (n) { case 0: exit(1); break; case 1: PrintSeqlist(pSeq); break; case 2: InitSeqlist(pSeq); break; case 3: printf("请输入元素\n"); scanf("%d", &x); PushBack(pSeq, x); break; case 4: PopBack(pSeq); break; case 5: printf("请输入元素\n"); scanf("%d", &x); PushFront(pSeq, x); break; case 6: PopFront(pSeq); break; case 7: printf("请输入删除位置\n"); scanf("%d", &pos); Erase(pSeq, pos); break; case 8: printf("请输入元素\n"); scanf("%d", &x); Remove(pSeq, x); break; case 9: printf("请输入元素\n"); scanf("%d", &x); RemoveAll(pSeq, x); break; case 10: BubbleSort(pSeq); break; case 11: printf("请输入元素\n"); scanf("%d", &x); ret=BinarySearch(pSeq, x); if (ret == -1) printf("没有这个元素\n"); printf("下标为:%d\n", ret); break; case 12: DestorySeqlist(pSeq); break; case 13: InsertSort(pSeq); break; case 14: SelectSort(pSeq); break; default: printf("输入无效\n"); break; } } } int main() { Seqlist pSeq; test(&pSeq); system("pause"); return 0; }以上是"web中如何实现实现顺序表"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
元素
输入
空间
位置
顺序
内容
篇文章
j++
存储
最大
容量
情况
时候
标记
学习
帮助
检查
有序
下标
个数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国际版怎么创建自己的服务器
防火墙对于网络安全
南昌ibm服务器售后
ubuntu服务器管理
orcle数据库的引擎有哪些
时间戳添加数据库
公安机关内部网络安全宣传内容
c语言复制远程服务器文件
中大研究生网络安全
怀旧服部落转到哪个服务器好
计算机网络技术应用方向学习
网络安全大赛奖杯
数据库设计excel表
计算机网络安全工作
上海海洋大学数据库
思科网络技术学院直播
济南森宇网络技术公司
生活中网络安全问题及对策
交易是炒股软件开发
八洲网络技术
软件开发武汉学校
昶弘网络技术公司
网络技术技能
数据库审计和堡垒机的不同
网络安全接入层
青少年网络安全观后感四百字
大学主题网络安全班会记录
vb代码 新浪股票数据库
网络安全法保护公民
棋牌软件开发者不犯法么