顺序表的基本操作(创建,遍历,查找,删除,归并)
2015-09-20 18:35
369 查看
#include"stdio.h" #include"stdlib.h" #define SIZE 10 #define LISTINCREMENT 10 typedef struct{ int *elem; int length; int listsize; }SqList; void Print_List(SqList L){ //遍历顺序表 int i; for(i=0;i<L.length;i++) printf("%d\t",L.elem[i]); }//Print_List void Create_List(SqList &L){ //创建顺序表 int i; L.elem=(int *)malloc(SIZE*sizeof(int)); printf("请输入顺序表长度\n"); scanf("%d",&L.length); printf("请输入元素\n"); for(i=0;i<L.length;i++){ scanf("%d",L.elem+i); } Print_List(L);//遍历并显示顺序表; }//Create_List void Search_Elem(SqList L){//找某一元素,查找成功显示查找元素,否则显示查找失败。 int i,elem,flag=0; printf("请输入你要查找的元素\n"); scanf("%d",&elem); for(i=0;i<L.length;i++){ if(L.elem[i]==elem){ printf("该元素位于%d\n",i+1); flag=1; } } if(flag==0) printf("没有该元素\n"); }//Search_List; void Insert_Elem(SqList &L,int n,int m){//在第n个元素前插入元素m int i; printf("在第几个元素前插入几\n"); scanf("%d%d",&n,&m); if(n<1 || n>L.length) exit(0); for(i=L.length;i>=n-1;i--) L.elem[i+1]=L.elem[i]; L.elem[n-1]=m; ++L.length; Print_List(L); }//Insert void Delete_Elem(SqList &L){//删除第m个元素 int i,m; printf("请输入要删除元素的位置\n"); scanf("%d",&m); if(m<1 || m>L.length) exit(0); for(i=m-1;i<L.length;i++){ L.elem[i]=L.elem[i+1]; } L.length--; Print_List(L); }//Delete_Elem; void Merge_List(SqList La,SqList Lb,SqList Lc){//顺序表的归并 int *pa=La.elem,*pb=Lb.elem,*pc; int *pa_last,*pb_last; Lc.listsize=Lc.length=La.length+Lb.length; pc=Lc.elem=(int*)malloc(Lc.listsize*sizeof(int)); if(!Lc.elem) exit(0); pa_last=La.elem+La.length-1; pb_last=Lb.elem+Lb.length-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++; Print_List(Lc); }//Merge_List; int main(){ SqList l,p,q,u; int m,n; Create_List(l);//创建顺序表; Search_Elem(l);//查找顺序表中的某个元素; Insert_Elem(l,n,m);//插入 Delete_Elem(l);//删除第m个元素 printf("请输入两个顺序递增表:\n"); Create_List(p); Create_List(q); Merge_List(p,q,u);//归并 return 0; }
4000
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法