数据结构顺序表相关基本操作练笔
2016-10-16 15:39
423 查看
数据结构顺序表相关基本操作练笔
#include<stdio.h> #include<stdlib.h> #define MAX 30 #define LIST_INCREMENT 40 typedef struct{ int lenth; int listsize; int *base; }sqlist; void InitList(sqlist &L)//初始化顺序表 { L.base=(int *)malloc(MAX*sizeof(int)); if(!L.base)//分配内存失败 exit(1); L.lenth=0; L.listsize=MAX; printf("please input the lenth of the list\n"); scanf("%d",&L.lenth); printf("please input the val of the list:"); for(int i=0;i<L.lenth;i++) { scanf("%d",&L.base[i]); } } void output(sqlist L)//输出函数 { int i; for(i=0;i<L.lenth;i++) { printf("%5d",L.base[i]); } printf("\n"); } bool compare(int elem1,int elem2) { if(elem1==elem2) return true; else return false; } int LocateElem(sqlist L,int elem) { int i=1; int *p=L.base; while(i<=L.lenth&&!compare(*p++,elem))//注意是*p++,取的是指针p的值,再++,不是 *p //如果这里用*p的话,下面一定不要忘了加*p++; { i++; } if(i<=L.lenth) return i; else return 0; } void Destroylist(sqlist &L)//销毁顺序线性表L { free(L.base);//释放L.base所指向的存储空间 L.base=NULL;//L.base 不指向任何的存储单元 L.lenth=0; L.listsize=0; } int ListInsert(sqlist &L,int i,int elem) { int *newbase,*p,*q; if(i<1||i>L.lenth+1) { return 0; } if(L.lenth==L.listsize) { newbase=(int *)realloc(L.base,(L.listsize+LIST_INCREMENT)*sizeof(int)); if(!newbase) exit(1); L.base=newbase; L.listsize+=LIST_INCREMENT; } q=L.base+i-1; for(p=L.base+L.lenth-1;p>=q;--p) { *(p+1)=*p; *q=elem; L.lenth++; } return 0; } void ListDele(sqlist L,int i) { int elem; int *p,*q; p=L.base+i-1; elem=*p; q=L.base+L.lenth-1; for(p++;p<=q;p++) *(p-1)=*p; L.lenth-1; } void MergeList(sqlist La,sqlist &Lb,sqlist &Lc) { int *pa,*pa_last,*pb,*pb_last,*pc; pa=La.base; pb=Lb.base; Lc.listsize=Lc.lenth=La.lenth+Lb.lenth; pc=Lc.base=(int*)malloc(Lc.listsize*sizeof(int)); if(!Lc.base) { exit(0); } pa_last=La.base+La.lenth-1; pb_last=Lb.base+Lb.lenth-1; while(pa<=pa_last&&pb<=pb_last) { if(*pa<=*pb) *pc++=*pa++; else *pc++=*pb++; } while(pa<=pa_last) *pc++=*pa++; while(pb<=pb_last) *pc++=*pb++; } int main() { int a,i; int elem; sqlist La; InitList(La); output(La); printf("请输入要查找的数据:"); scanf("%d",&elem); a=LocateElem(La,elem); printf("%d",a); printf("please input the number you want to del\n"); scanf("%d",&i); ListDele(La,i); output(La); return 0; }
相关文章推荐
- 数据结构之顺序表增、删、查找、初始化以及顺序表输出基本相关操作
- 数据结构——顺序表的基本操作
- 数据结构与算法:顺序串基本操作
- 数据结构之顺序栈的一些基本操作
- 数据结构——顺序表及其基本操作
- 数据结构之顺序串的基本操作
- 【数据结构实验】实验二 顺序表的基本操作的实现
- 严蔚敏数据结构顺序表的所有基本操作
- 数据结构(1)——顺序表 交并差等基本操作
- 数据结构-顺序线性表基本操作实现
- 数据结构——顺序表的基本操作
- 【数据结构】顺序栈的基本操作操作---C/C++
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- 数据结构-顺序表的基本操作
- 数据结构中顺序表的基本操作(纯C语言)
- 【数据结构】顺序栈的基本操作
- 数据结构:顺序表的基本操作
- 数据结构之顺序表的基本操作
- 数据结构之线性表中顺序表的基本操作
- 数据结构之顺序表基本操作