web中如何实现实现顺序表
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"web中如何实现实现顺序表",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"web中如何实现实现顺序表"这篇文章吧。seqlist.
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网新科技
互联网科技工作委员会主任
互联网科技工作委员会副主任毛军
互联网科技公司的优势
新华互联网科技学院
互联网科技未来
互联网 科技公司
期待互联网科技
互联网与新科技
互联网金融科技平台
天扬科技互联网广告
中国最先进互联网科技公司
互联网科技中介
欧洲十大科技互联网公司
云南省自由互联网科技有限公司
福建互联网展示科技馆设计
长沙渺峰互联网科技有限公司
互联网的科技体现在哪里
广东猫王互联网科技有限公司电话
东风日产互联网科技公司叫什么
西安纸贵互联网科技有限公司
华宇互联网科技
互联网科技网站
长亮科技 互联网金融
互联网科技大会案例
富国互联网科技创新基金
苏州铭阳互联网科技有限公司
哈尔滨屹滨互联网科技有限公司
特约风豹互联网科技为什么扣费
风投北京互联网科技