c语言实现静态顺序表
来源:互联网 发布:淘宝雪梨的质量 编辑:程序博客网 时间:2024/05/17 21:32
seqlist.h#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<stdio.h>#include<assert.h> #include<string.h> #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 Display(const pSeqList ps);//显示void PushFront(pSeqList ps, DataType d);//头插void PopFront(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#include"seqlist.h"void InitSeqList(pSeqList ps){assert(ps);ps->sz = 0;memset(ps->data, 0, sizeof(DataType)*(ps->sz));}void PushBack(pSeqList ps, DataType d){assert(ps);if (ps->sz < MAX){ps->data[ps->sz] = d;ps->sz++;}else{return;}}void PopBack(pSeqList ps){assert(ps);if (ps->sz == 0){return;}else{ps->sz--;}}void Display(const pSeqList ps){int i = 0;for (i = 0; i < ps->sz; i++){printf("%d", ps->data[i]);}printf("\n");}void PushFront(pSeqList ps, DataType d){assert(ps);int i = 0;for (i = ps->sz; i >0; i--){ps->data[i] = ps->data[i - 1];}ps->data[0] = d;ps->sz++;}void PopFront(pSeqList ps){assert(ps);int i = 0;if (ps->sz == 0){return;}else{for (i = 0; i < ps->sz; i++){ps->data[i] = ps->data[i + 1];}ps->sz--;}}int Find(pSeqList ps, DataType d){assert(ps);int i = 0;for (i = 0; i < ps->sz; i++){if (ps->data[i] == d){return i;}}return -1;}void Insert(pSeqList ps, DataType d, int pos){assert(ps);int i = 0;if (ps->sz == MAX){return;}else{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){assert(ps);int i = 0;for (i = 0; i < ps->sz; i++){if (ps->data[i] == d){for (; i < ps->sz; i++){ps->data[i] = ps->data[i + 1];}ps->sz--;break;}}}void RemoveAll(pSeqList ps, DataType d){assert(ps);int i = 0;for (i = 0; i < ps->sz; i++){if (ps->data[i] == d){for (; i < ps->sz; i++){ps->data[i] = ps->data[i + 1];}ps->sz--;i = 0;}}}void Reverse(pSeqList ps){assert(ps);DataType tmp = 0;int left = 0;int right = ps->sz - 1;while (left < right){tmp = ps->data[left];ps->data[left] = ps->data[right];ps->data[right] =tmp;left++;right--;}}void Sort(pSeqList ps){DataType tmp = 0;int i = 0;int j = 0;for (i = 0; i < ps->sz - 1; 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 + (right - left) / 2;if (ps->data[mid] < d){left=mid;}else if (ps->data[mid]>d){right=mid;}elsereturn mid;}return -1;}
test.c#include"seqlist.h"void test(){SeqList my_list;//创建结构提变量 InitSeqList(&my_list);//初始化函数 //PushBack(&my_list, 1);//插尾函数 //Display(&my_list);//PushBack(&my_list, 2);//插尾函数 //Display(&my_list);//PushBack(&my_list, 3);//插尾函数 //Display(&my_list);//PushBack(&my_list, 4);//插尾函数 //Display(&my_list);//打印数序表 //PopBack(&my_list);//删除尾部元素的信息 //Display(&my_list);//PopBack(&my_list);//Display(&my_list);//PopBack(&my_list);//Display(&my_list);//PopBack(&my_list);//Display(&my_list);//打印数序表 PushFront(&my_list, 1);//从头部插入 Display(&my_list);PushFront(&my_list, 2);Display(&my_list);PushFront(&my_list, 3);Display(&my_list);PushFront(&my_list, 2);Display(&my_list);PushFront(&my_list, 4);Display(&my_list);//PopFront(&my_list);//Display(&my_list);//PopFront(&my_list);//Display(&my_list);//PopFront(&my_list);//Display(&my_list);//PopFront(&my_list);//Display(&my_list);//int ret=Find(&my_list, 3);//printf("%d", ret);Insert(&my_list, 8, 3);//指定位置插入元素 Display(&my_list);//Remove(&my_list, 2);//删除所有你想删除的元素出现的第一个 //Display(&my_list);//RemoveAll(&my_list, 2);//删除顺序表中出现的所有你要删除的元素 //Display(&my_list); //Reverse(&my_list);//逆序的测试 //Display(&my_list);//Sort(&my_list);//排序的测试 //Display(&my_list);//int ret = BinarySearch(&my_list, 2);//二分查找的测试 //printf("%d", ret);}int main(){test();system("pause");return 0;}
阅读全文
0 0
- C语言实现静态顺序表
- 【C语言】实现静态顺序表
- c语言实现静态顺序表
- 静态顺序表------C语言实现
- C语言实现顺序表--静态
- C语言静态顺序表的实现
- C语言实现静态顺序表
- 静态顺序表(C语言实现)
- 静态顺序表(C语言实现)
- 用C语言实现静态顺序表
- C语言实现静态顺序表
- 用C语言实现静态顺序表
- 静态顺序表-c语言实现
- c语言实现静态顺序表
- c语言实现静态顺序表
- c语言实现静态顺序表
- C语言实现静态顺序表
- C语言实现 静态顺序表
- Json Web Token
- 证明接口中量和方法的默认访问修饰符及其信息
- leetcode485
- 树形动态规划 hdu1502 poj2342 Anniversary party
- cocos2dx学习笔记-给精灵类添加事件
- c语言实现静态顺序表
- Python3 输入和输出
- 命令模式
- Codeforces 题目合集+分类+蒟蒻的代码 【Updating...】【206 in total】
- JS 中关于this 执行环境的问题_part2
- 【python2.7初学日记】最初学习和编写的几个简单代码
- MySQL在单表上创建视图
- 《应用拆分与平台搭建最佳实践》- 拆分中两个核心问题
- 硬件技术