顺序表的应用举例(利用顺序表的基本运算,实现如果在顺序表A中出现的元素,在顺序表B中也出现,则将A中该元素删除)
2015-02-02 22:42
387 查看
利用顺序表的基本运算,实现如果在顺序表A中出现的元素,在顺序表B中也出现,则将A中该元素删除。
头文件:函数的声明
函数的定义
函数的功能实现
头文件:函数的声明
#include <stdio.h> #define LISTSIZE 100 typedef int ElemType; typedef struct { ElemType list[LISTSIZE]; int length; }Seqlist; void InitList(Seqlist *L);//初始化操作 int ListEmpty(Seqlist L);//判断线性表为空 int GetElem(Seqlist L,int i,ElemType *e);//用序号获取元素 int LocateElem(Seqlist L,ElemType e);//用内容获取元素 int InsertList(Seqlist *L,int i,ElemType e);//插入线性表 int DeleteList(Seqlist *L,int i,ElemType *e);//从线性表中删除 int ListLength(Seqlist L);//返回线性表元素个数 void ClearList(Seqlist *L);//清空线性表
函数的定义
#include "顺序表.h" void InitList(Seqlist *L)//初始化操作 { L->length = 0; } int ListEmpty(Seqlist L)//判断线性表为空 { if(0 == L.length ) { return 1; } else { return 0; } } int GetElem(Seqlist L,int i,ElemType *e)//用序号获取元素 { if(i < 1||i > L.length ) { return -1; } *e = L.list[i-1]; return 1; } int LocateElem(Seqlist L,ElemType e)//用内容获取元素 { int i; for(i = 1;i < L.length+1 ;i++) { if(e == L.list[i-1]) { return i; } } return 0; } int InsertList(Seqlist *L,int i,ElemType e)//插入线性表 { int j; if(i < 1||i > L->length +1) { printf("插入位置不合适!\n"); return -1; } else if(L->length >= LISTSIZE) { printf("顺序表已满,不能插入元素!\n"); return 0; } else { for(j = L->length ;j >= i;j--) { L->list[j] = L->list[j-1]; } L->list[i-1] = e; L->length = L->length +1; return 1; } } int DeleteList(Seqlist *L,int i,ElemType *e)//从线性表中删除 { int j; if(i < 1||i > L->length) { printf("删除位置不合适!\n"); return -1; } else if( 0 == L->length ) { printf("顺序表已空,不能进行删除!\n"); return 0; } else { *e = L->list[i-1]; for(j = i;j < L->length ;j++) { L->list[j-1] = L->list[j]; } L->length = L->length - 1; return 1; } } int ListLength(Seqlist L)//返回线性表元素个数 { return L.length ; } void ClearList(Seqlist *L)//清空线性表 { L->length = 0; }
函数的功能实现
#include "顺序表.h" void DelElem(Seqlist *A,Seqlist B);//删除A中出现的B的元素 int main(void) { int i,j,flag; ElemType e; Seqlist A,B; InitList(&A); InitList(&B); for(i = 1;i < 11;i++) { if( 0 == InsertList(&A,i,i)) { printf("位置不合法"); return 0; } } for(i = 1,j = 1;j < 7;i += 2,j++) { if( 0 == InsertList(&B,j,i*2)) { printf("位置不合法"); return 0; } } printf("顺序表A中的元素:\n"); for(i = 1;i <= A.length ;i++) { flag = GetElem(A,i,&e); if(1 == flag) { printf("%4d",e); } } printf("\n"); printf("顺序表B中的元素:\n"); for(i = 1;i <= B.length ;i++) { flag = GetElem(B,i,&e); if(1 == flag) { printf("%4d",e); } } printf("\n"); printf("删除表A中出现B的元素后的结果:\n"); DelElem(&A,B); for(i = 1;i <= A.length ;i++) { flag = GetElem(A,i,&e); if(1 == flag) { printf("%4d",e); } } printf("\n"); return 0; } void DelElem(Seqlist *A,Seqlist B) { int i,flag,pos; ElemType e; for(i = 1;i <= B.length ;i++) { flag = GetElem(B,i,&e); if(1 == flag) { pos = LocateElem(*A,e); if(pos > 0) { DeleteList(A,pos,&e); } } } }
相关文章推荐
- 单链表应用举例(利用单链表的基本运算,实现如果在A单链表中出现的元素在B单链表中也出现,则将A中的元素删除)
- 顺序表的应用举例(顺序表A和顺序表B的元素都是非递减排列,利用顺序表的基本运算,将它们合并成一个顺序表C,要求C也是非递减序列。)
- 单链表应用举例(单链表A和单链表B的元素都是非递减排列,利用单链表的基本运算,将它们合并成一个单链表C,要求C也是非递减序列)
- 编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)
- 编写一个程序实现顺序栈的各种基本运算(假设顺序表的元数基本类型为Char)
- 暑假集训二顺序表-顺序表应用1:多余元素删除之移位算法
- 数据结构笔记(一)线性表的顺序表示和基本操作及其顺序表实现的集合运算(A-B)U(B-A)实例
- c语言实现顺序表的插入,删除和求给定元素在表中的位序等运算
- [SDUT](3324)顺序表应用1:多余元素删除之移位算法 ---顺序存储(线性表)
- 线性表—顺序表-顺序表基本运算的实现
- 利用顺序表的操作,实现以下函数: 1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
- 暑假集训二顺序表-顺序表应用2:多余元素删除之建表算法
- 编程实现顺序表的以下基本操作:建立顺序表,修改顺序表,插入顺序表,删除顺序表。
- 编写一个一个程序实现顺序环形队列各项基本运算(假设队列基本元素类型为Char)
- 顺序表应用1:多余元素删除之移位算法(链表实现)
- 实现顺序表的各种基本运算(利用线性表来实现)
- 利用字符出现的次数,编写一个方法,实现基本的字符串压缩功能。
- 编写一个程序,实现顺序表的各种基本运算
- 实现顺序栈各种基本运算
- 编写一个程序,实现顺序环形队列的各种基本运算。