顺序表
来源:互联网 发布:电脑桌面备忘录软件 编辑:程序博客网 时间:2024/06/15 21:49
顺序表基本用法
#include <stdio.h>#include <malloc.h>#define max (20)typedef struct { char data[max]; int last;}Sequenlist;void Sqlsetnull(Sequenlist * ); //置空栈Sequenlist * builtSeq(); //建空栈int Sqllength(Sequenlist *); //计算顺序表长度char Sqlget(Sequenlist *,int ); //获取元素void Sqllocate(Sequenlist *, char ); //按值查找int isFull(Sequenlist *); //判断表满int Sqlinsert(Sequenlist * ,int i ,char ); //插入元素int Sqldelete(Sequenlist * ,int i ); //删除元素void show(Sequenlist *);void Order(Sequenlist *);int main (){ Sequenlist * l = builtSeq(); while(1){ printf("1.插入元素\t\t2.删除元素\n3.获取元素\t\t4.按值查找\n5.展示所有元素\t\t6.改变顺序\n"); char temp ,ch; int n,m,s,key; fflush(stdin); scanf("%d",&key); switch(key){ case 1: printf("请输入需要插入的元素个数"); int i ; fflush(stdin); scanf("%d",&i); printf("\n输入元素:\n"); for (int j = 0 ; j < i ; j ++){ fflush(stdin); scanf ("%c",&temp); Sqlinsert(l,j,temp); } break; case 2: printf("\n请输入要删除的元素的下标: "); scanf("%d",&n); putchar('\n'); Sqldelete(l,n); break; case 3: printf("请输入下标: "); scanf("%d",&m); ch = Sqlget(l,m); printf("%c",ch); break; case 4: fflush(stdin); scanf ("%c",&s); Sqllocate(l,s); break; case 5: show(l); break; case 6: Order(l); break; } }}void Sqlsetnull(Sequenlist * l){ l-> last= -1;}Sequenlist * builtSeq(){ Sequenlist * l ; l = (Sequenlist * )malloc (sizeof(Sequenlist)); Sqlsetnull(l); return l;}int Sqllength(Sequenlist * l){ return l->last;}int isFull(Sequenlist * l){ if ((l->last)+1>=max) return 1; return 0;}int Sqlinsert(Sequenlist * l ,int i ,char x){ //i表示下标,last表示最后一个元素的下标 int j ; if(isFull(l)){ printf("\n表已满 !!\n"); return 0; } else if ((i < 0)||(i>l->last+2)){ printf("\n操作错误!\n"); return 0; } else { for ( j = l->last;j>=i;j--){ l->data[j+1] = l->data[j]; } l->data[i] = x; l->last++; return 1; }}int Sqldelete(Sequenlist * l ,int i ){ int j; if (l->last<0){ printf("\n表为空 !!\n"); return 0; } else if ((i<1)||(i>l->last+1)){ printf("\n参数错误 !!\n"); return 0; } for(j = i ; j <= l->last;j++){ l->data[j-1] = l->data[j]; } l->last--; return 1;}char Sqlget(Sequenlist * l,int i){ char x ; if (i < 1||i>Sqllength(l)){ printf("\n超出范围 !!\n"); } else { x = l->data[i-1]; printf("该值为:%c\n",x);} return x;}void show (Sequenlist * l){ for (int i= 0 ; i<= l->last;++i){ printf("%c ",l->data[i]); } printf("\n");}void Order(Sequenlist *l){ char temp ; int n = l->last - 1; for (int i = 0;i<=n-i;++i){ temp = l->data[i]; l->data[i]=l->data[n-i]; l->data[n-i]= temp; }}void Sqllocate(Sequenlist * l ,char x ){ int i ,z = 0; for (int i = 0; i < l->last;i++){ if (l->data[i]==x){ printf("\n第%d位\n",i+1); z=1; } } if (z == 0){ printf("\n没有找到!\n"); }}
0 0
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 【51nod 算法马拉松19 A】区间的价值 V2
- JAVA基础知识点(十一)--线程
- [LeetCode]Climbing Stairs
- access函数
- 进程的基本概念和进程控制
- 顺序表
- Enterprise Architecit_EA 安装过程
- 各种数据库的分页SQL
- Quartz学习
- jquery中的ready方法、js中的window.onload和body标签中的onload的区别
- 打印杨辉三角(廖雪峰python教程)
- 如何将数据封装为JSON包
- gcc,gdb基本用法
- index文件加载不出来问题-清除浏览器缓存