顺序表
来源:互联网 发布:linux rpm文件 编辑:程序博客网 时间:2024/06/08 00:22
#include <stdio.h>#include <malloc.h>/*** *顺序查找 * 在顺序表(22,34,25,12,35,67,7,45)中查找定值为25的数据元素 */#define MAXLEN 100#define ElemType char //顺序表中元素的类型typedef struct{ ElemType data[MAXLEN]; int last; //最后一个元素的位置}SequenList;//顺序表置空SequenList * setSqLNull(){ SequenList * L; L = (SequenList *)malloc(sizeof(SequenList)); L->last = 0; return L;}//由数组输入元素void ArrayInput(SequenList * L,ElemType a[],int n){ int i; for(i = 0;i < n; i++) L->data[i] = a[i]; L->last = n;}//由键盘输入元素void KeyboardInput(SequenList * L){ int i,n; printf("\n请输入元素个数:"); scanf("%d", &n); printf("\n请输入%d个元素:\n",n); for(i=0; i<n; i++) scanf("%d", &L->data[i]); L->last = n;}//顺序表求表长int SqLlength(SequenList * L){ return L->last;}//顺序表按序号取元素ElemType SqLget(SequenList * L, int i){ if (i > SqLlength(L) || i < 0) printf("error"); else return L->data[i-1];}//顺序表按值查找 输出该值在顺序表中的位置void SqLlocate(SequenList * L, ElemType ch){ int i; int flag = 0; for (i = 0; i < SqLlength(L); ++i) if (L->data[i] == ch) { printf("%c在顺序表中的位置为%d\n", ch, i + 1); flag = 1; } if (0 == flag) printf("该顺序表中不存在%c\n", ch);}//顺序表判表满int SqLfull(SequenList * L){ if (L->last >= MAXLEN) return 1; else return 0;}//顺序表插入数据元素void SqLinsert(SequenList * L, int n, ElemType ch){ int i; if (SqLfull(L)) printf("over flow\n"); else if (n < 0 || n > SqLlength(L) + 1) printf("error\n"); else { for(i = L->last; i >= n-1; i--) L->data[i+1] = L->data[i]; L->data[n-1] = ch; L->last++; }}//顺序表删除数据元素的算法void SqLdelete(SequenList * L, int i){ int j; if (L->last < 0) printf("error : Sqldelete list is null"); else if (i < 0 || i > L->last + 1) printf("error : SqLdelete"); else { for (j = i - 1; j <= L->last; ++j) { L->data[j] = L->data[j+1]; } L->last--; }}//顺序表逆置 Inversevoid SqLinverse(SequenList * L){ int i, j; ElemType temp; for (i = 0, j = L->last-1; i < j; i++, j--) { temp = L->data[i]; L->data[i] = L->data[j]; L->data[j] = temp; }}//输出顺序表void print(SequenList * L){ int i; for (i = 1; i <= SqLlength(L); ++i) { printf("%c ", SqLget(L, i)); } printf("\n");}int main(void){ int i; ElemType ch = 'A'; SequenList * L = setSqLNull(); for (i = 1; i <= 26; ++i, ch++) { SqLinsert(L, i, ch); } //printf("插入26个字母\n"); print(L); SqLdelete(L, 1); SqLdelete(L, 1); SqLdelete(L, 24); //printf("删除了三个字母后:\n"); print(L); SqLinverse(L); //printf("逆置后:\n"); print(L); return 0;}
1 0
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】
- java i++ 和 ++i 深度解析
- java 遍历arrayList的四种方法
- Python wheel /whl 文件包的正确安装
- java中i++和++i
- 顺序表
- 为了保护眼睛,将eclipse背景色调成豆沙绿
- DM&ML_note.6-K-中心点聚类算法
- centos6.5 salt的操作日志写入数据库
- CentOS7配置samba与Windows共享文件
- Nachos操作系统:Pro1.3:完成Alarm类
- AP聚类算法
- 微信小程序9---Button按钮和icon图标
- 周一