资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
顺序表的操作顺序表的操作_ _核心语句核心语句/* 线性表-顺序表的操作: 核心语句 */#include “stdio.h“#include “stdlib.h“#define N 100typedef int ElemType;/* 顺序表的存储结构 */typedef struct ElemType *elem;int length; SqList;/* 顺序表的基本操作 */* 1.初始化顺序表 */void InitList(SqList *L) L-elem=(ElemType*)malloc(N*sizeof(ElemType);L-length=0; /* 2.销毁顺序表 */void DestroyList(SqList *L) free(L-elem); /* 3.清空顺序表 */void ClearList(SqList *L) L-length=0; /* 4.是否为空表 */int ListEmpty(SqList L) if (L.length=0)return 1;elsereturn 0; /* 5.顺序表长度 */int ListLength(SqList L) return L.length; /* 6.取顺序表第 p 个元素 */void GetElem(SqList L, int p, ElemType *e) *e=L.elemp-1; /* 7.在顺序表中查找元素 */int LocateElem(SqList L,ElemType e) int i,p=0;for(i=0; ilength-1; i=p-1; i-)L-elemi+1=L-elemi;L-elemp-1=e;L-length+; /* 11.删除顺序表中第 p 个位置的元素 */void ListDelete(SqList *L, int p, ElemType *e) int i;*e=L-elemp-1;for(i=p; ilength; i+)L-elemi-1=L-elemi;L-length-; /* 12(1).遍历顺序表并输出(数组下标法) */void ListTraverse(SqList L) int i;printf(“nList:t“);for(i=0; ielemi=ai;L-length=n; /* A(2).由键盘输入顺序表元素 */void InputElem2(SqList *L) int i,n;printf(“n 请输入元素个数:“);scanf(“%d“, printf(“n 请输入%d 个元素:n“,n);for(i=0; ielemi);L-length=n; /* B(1).删除指定值的所有元素 */void Deletex(SqList *L, ElemType x) int i,j;for(i=j=0; ilength; i+)if (L-elemi!=x) L-elemj=L-elemi; j+; L-length=j; /* B(2).删除重复元素 */void DeleteRepElem(SqList *L) int i,j; ElemType x;for(i=0; ilength; i+)for(j=i+1; jlength; )if (L-elemj=L-elemi)ListDelete(L,j+1,elsej+;/* C(1). 算法 2.1 顺序表的合并 */void Union1(SqList *La, SqList Lb) int i,alen,blen; ElemType e;alen=ListLength(*La); blen=ListLength(Lb);for(i=1; i=blen; i+) GetElem(Lb,i,if (!LocateElem(*La,e) ListInsert(La,+alen,e); /* C(2). 算法 2.2 有序顺序表允许重复元素的有序合并 */void Union2(SqList La, SqList Lb, SqList *Lc) int i,j,k,alen,blen; ElemType ai,bj;InitList(Lc);i=j=k=1;alen=ListLength(La); blen=ListLength(Lb);while(i=alen GetElem(Lb,j,if (ai=bj) ListInsert(Lc,k,ai); i+; k+; else ListInsert(Lc,k,bj); j+; k+; while(i=alen) GetElem(La,i, ListInsert(Lc,k,ai); i+; k+; while(j=blen) GetElem(Lb,j, ListInsert(Lc,k,bj); j+; k+; /* 主函数 */main() SqList La,Lb,Lc; ElemType a=1,3,5,7,9,b=2,5,6,8,9,16,x;InitList( InitList(InputElem( ListTraverse(La);InputElem( ListTraverse(Lb);Union2(La,Lb,ListTraverse(Lc);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号