《数据结构》 顺序表常用操作代码集合
来源:互联网 发布:微信网络兼职群 编辑:程序博客网 时间:2024/05/21 06:46
Ps:每段代码中,添加了署名Solo的是博主自己写的,其余来自课本或者老师。
//定义线性表的存储结构#define MAXSIZE 100typedef struct{ ElemType elem[MAXSIZE]; //ElemType自定义 int last;} SeqList;//线性表按查找内容运算 Locate(L,e)函数int Locate(SeqList L, ElemType e){ i = 0; while((i <= L.last) && (L.elem[i] != e)) i++; if(i <= L.last) return(i + 1); else return(-1);}//线性表的插入操作#define OK 1#define ERROR 0int InList(Seqlist *L, int i, ElemType e){ int k; if(i < 1 || i > L->last+2) { printf("插入位置i不合法"); return ERROR; } if(L->last >= MAXSIZE - 1) { printf("表已满,无法插入"); return ERROR; } for(k = L->last; k >= i-1; k--) L->elem[k+1] = L->elem[k]; L->elem[i-1] = e; L->last++; return OK; }//线性表的删除操作int DelList(SeqList *L, int i, ElemType *e){ int k; if(i < 1 || i > L->last+1) { printf("删除位置不合法"); return ERROR; } *e = L->elem[i-1]; for(k = i; i <= L->last; k++) L->elem[k-1] = elem[k]; L->last--; return OK;}//线性表原地逆置int SListRev(SeqList *L){ int i; ElemType t; for(i=0; i<L->last/2; i++) { t = a[i]; a[i] = a[n-i-1]; a[n-i-1] = t; } return Ok;}//线性表的合并运算1void mergeList(SeqList *LA, Seqlist *LB, Seqlist *LC){ int i,j,k; i=0; j=0; k=0; while(i <= LA->last && j <= LB->last) if(LA->elem[i] <= LB->elem[j]) { LC->elem[k] = LA->elem[i]; i++; k++; } else{ LC->elem[k] = LB->elem[i]; j++; k++; } while(i <= LA->last) { LC->elem[k] = LA->elem[i]; i++; k++; } while(j <= LB->last) { LC->elem[k] = LA->elem[j]; j++; k++; } LC->last = LA->last + LB->last + 1;}//线性表的合并运算2——Solovoid mergeList(SeqList *LA, Seqlist *LB, Seqlist *LC){ int i,j,k; i=0; j=0; k=0; while(i <= LA->last || j <= LB->last) if(LA->elem[i] <= LB->elem[i] || (i <= LA->last && j > LB->last ) { LC->elem[k] = LA->elem[i]; i++; k++; } if(LA->elem[i] > LB->elem[j] || (i > LA->last && j <= LB->last)) { LC->elem[k] = LB->elem[i]; j++; k++; }}/*删除非递减顺序表L中所有值相等元素——Solo*///①若相等的值只有一个,为e,只有该种情况才能满足《数据结构》课本习题的要求void Delsame(Seqlist *L e){ int i,j; for(i=0,j=0; i<L->last; i++) if(L->elem[i] != e) { L->elem[j] = L->elem[i]; j++; } L->last = j+1;}//②若相等的值有很多,且不确定 两种方法void Delmulsame(Seqlist *L){ int i,j,k; for(i=0; i<L->last; i++) for(j=1; j<L->last; j++) { if(L->elem[i] = L->elem[j]) for(k=j; j<L->last; k++) { L->elem[k] = L->elem[k+1]; L->last--; } }}void Delmulsame(Seqlist *L){ int i,j,k,t; for(i=0; i<L->last-1; i++) { for(k=i, j=i+1; j<n; j--) //冒泡法排序 if(a[j] <a[k]) k = j; if(k != i) { t = a[i]; a[i] = a[k]; a[k] = t; } }/* for(i=0; i<L->last-1; i++) //这段被注释掉了,是选择法排序 for(j=L-last-1; j>=i; j--) if(a[j] > a[j+1]) { a[j] = t; a[j] = a[j+1]; a[j+1] = a[j]; } */ for(i=0; i<L->last; i++) { if(L->elem[i] = L->elem[i+1]) { for(k=i; k<L->last; k++) { L->elem[k] = L->elem[k+1]; k--; L->last--; } } }}
zhihu:Solo | weibo@从流域到海域
0 0
- 《数据结构》 顺序表常用操作代码集合
- 《数据结构》 定长顺序串常用操作代码集合
- 《数据结构》 单链表常用操作代码集合
- 数据结构之顺序表常用操作整理
- 《数据结构》 循环链表和双向链表常用操作代码集合
- 《数据结构》 栈代码操作集合
- 《数据结构》 队列(Queue)操作代码集合
- 顺序表的操作集合
- 数据结构--顺序表的操作
- 数据结构-顺序表的操作
- 数据结构-顺序表相关操作
- 数据结构:顺序表的操作
- 数据结构实验--顺序表操作
- 数据结构之顺序表操作
- 数据结构--顺序表合并操作
- 数据结构->顺序表的操作
- 数据结构-顺序表代码实现
- java 集合的常用操作(排序、查找、打乱顺序)
- libev c++ example
- caffe+cuda7.0+opencv3.0.0+mkl ubuntu14.04配置
- window.print 页面打印
- take picture and show in fragment
- kvc简单的用法
- 《数据结构》 顺序表常用操作代码集合
- libev c++ example - 2
- C++的64位整数(转)
- Android项目:手机安全卫士(16)—— 复杂 ListView
- 初见swift--基础运算符
- linux查询系统版本
- IntelliJ IDEA中怎么全局搜索替换(整个项目)(Eclipse)
- Exception starting filter struts2 java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
- struts2拦截器+过滤器