数据结构中顺序表的基本操作(纯C语言)

来源:互联网 发布:org.apache.cxf.jaxws 编辑:程序博客网 时间:2024/05/22 12:55
#include <stdio.h>#define MAX 10typedef int ElemType;typedef struct{ElemType elem[MAX];int last;}SqList;//初始化void InitList(SqList *L){L->last=0;}//当前元素个数int LenList(SqList L){return L.last;}//插入操作int InsertList(SqList *L,int i,ElemType x){int k;if(L->last>=MAX){printf("表已满,无法插入\n");return 0;}else if(i<0 || i>L->last+1){printf("插入位置不合法\n");return 0;}else{for(k=L->last;k>i-1;k--)L->elem[k]=L->elem[k-1];L->elem[i-1]=x;L->last++;return 0;}}//删除操作int DelList(SqList *L,int i){int k;if((L->last<=0) || (i<0) || (i>L->last)){printf("删除位置不合法\n");return 0;}else{for(k=i;k<=L->last-1;k++)L->elem[k-1]=L->elem[k];L->last--;return 0;}}///查找元素int LocList(SqList L,ElemType x){int i;for(i=0;i<L.last;i++){if(L.elem[i]==x){printf("%d是线性表中第%d个元素\n",x,i+1);return 0;}}printf("没有找到%d\n",x);return 0;}//逆置线性表int RevList(SqList *L){int i,m=L->last/2,n=L->last;ElemType t;for(i=0;i<m;i++){t=L->elem[i];L->elem[i]=L->elem[n-1-i];L->elem[n-1-i]=t;}return 0;}//合并线性表int MergeList(SqList *La,SqList *Lb,SqList *Lc){int 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[j];j++;k++;}}while(i<La->last){Lc->elem[k++]=La->elem[i++];}while(j<Lb->last){Lc->elem[k++]=Lb->elem[j++];}Lc->last=k;return 0;}int main(){SqList La,Lb,Lc;int i,x;int n,m;//线性表长度InitList(&La);//初始化//输入Laprintf("请输入线性表La的长度:");scanf("%d",&n);La.last=n;printf("请输入线性表La中的元素\n");for(i=0;i<n;i++)scanf("%d",&La.elem[i]);//插入printf("\n请输入要插入到线性表La中的位置i和要插入的元素x\n");scanf("%d%d",&i,&x);InsertList(&La,i,x);printf("\n线性表\n");for(i=0;i<La.last;i++)printf("%d ",La.elem[i]);printf("\n");//删除printf("\n请输入要删除的元素的位置\n");scanf("%d",&i);DelList(&La,i);printf("\n线性表La\n");for(i=0;i<La.last;i++)printf("%d ",La.elem[i]);printf("\n");//查找printf("\n请输入要查找的元素:");scanf("%d",&x);LocList(La,x);//逆置RevList(&La);printf("\n逆置后的线性表La\n");for(i=0;i<La.last;i++)printf("%d ",La.elem[i]);printf("\n");//初始化LbInitList(&Lb);//输入Lbprintf("\n请输入线性表Lb的长度:");scanf("%d",&m);Lb.last=m;printf("\n请输入线性表Lb中的元素\n");for(i=0;i<m;i++)scanf("%d",&Lb.elem[i]);//初始化LcInitList(&Lc);//合并La,LbMergeList(&La,&Lb,&Lc);printf("\n合并后La和Lb后的线性表\n");for(i=0;i<Lc.last;i++)printf("%d ",Lc.elem[i]);printf("\n\n");return 0;}
0 0
原创粉丝点击