数据结构——顺序表删除练习
2016-09-24 01:44
239 查看
代码功能:
1. 删除顺序表中第一个值为x的元素
2. 删除顺序表中所有值为x的元素
3. 删除顺序表中下标为p的连续k个元素
函数说明:
函数声明:PSeqList createNullList_seq(int m)
函数功能:建立一个顺序表
函数参数:m为申请结点的个数
函数返回值:返回生成的线性表
函数声明:int locate_seq(PSeqList palist, int x)
函数功能:顺序表的查找
函数参数:palist为需处理的顺序表,x为查找的元素
函数返回值:元素存在则返回下标,不存在返回FALSE
函数声明:int deleteV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中第一个值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0
函数声明:int deletesV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中所有值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0
函数声明:int deletesP_seq(PSeqList palist, int p, int k)
函数功能:删除顺序表中下标为p的连续k个元素
函数参数:palist为需处理的顺序表,p为欲删除元素下标,k为连续元素个数
函数返回值:删除成功返回1,否则直接结束程序。
函数声明:void print(PSeqList palist)
函数功能:打印顺序表
函数参数:palist为需处理的数据表
函数返回值:无
1. 删除顺序表中第一个值为x的元素
2. 删除顺序表中所有值为x的元素
3. 删除顺序表中下标为p的连续k个元素
函数说明:
函数声明:PSeqList createNullList_seq(int m)
函数功能:建立一个顺序表
函数参数:m为申请结点的个数
函数返回值:返回生成的线性表
函数声明:int locate_seq(PSeqList palist, int x)
函数功能:顺序表的查找
函数参数:palist为需处理的顺序表,x为查找的元素
函数返回值:元素存在则返回下标,不存在返回FALSE
函数声明:int deleteV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中第一个值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0
函数声明:int deletesV_seq(PSeqList palist, DataType x)
函数功能:删除顺序表中所有值为x的元素
函数参数:palist为需处理的顺序表,x为欲删除元素
函数返回值:删除成功返回1,失败返回0
函数声明:int deletesP_seq(PSeqList palist, int p, int k)
函数功能:删除顺序表中下标为p的连续k个元素
函数参数:palist为需处理的顺序表,p为欲删除元素下标,k为连续元素个数
函数返回值:删除成功返回1,否则直接结束程序。
函数声明:void print(PSeqList palist)
函数功能:打印顺序表
函数参数:palist为需处理的数据表
函数返回值:无
#include<stdio.h> #include<stdlib.h> #include <windows.h> #define FALSE 0 #define TRUE 1 typedef int DataType; // 顺序表数据类型 struct SeqList { int MAXNUM; // 顺序表最大的容量 int n; // 顺序表中已有的元素个数 DataType *element; // 真正存放元素的其实地址 }; typedef struct SeqList *PSeqList; // 顺序表建立的算法,m为申请的结点个数 PSeqList createNullList_seq(int m) { PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList)); if(palist != NULL) { palist->element = (DataType *)malloc(sizeof(DataType)*m); if(palist->element) { palist->MAXNUM = m; palist->n = 0; return(palist); } else { free(palist); } } printf("out of space!\n"); return NULL; } // 顺序表的查找。存在返回下标,不存在返回FALSE int locate_seq(PSeqList palist, int x) { int q; for (q=0; q<palist->n; q++) { if (palist->element[q] == x) { return q; } } return FALSE; } // 删除顺序表中第一个值为x的元素 int deleteV_seq(PSeqList palist, DataType x) { int p, q, flag=0; for(p=0; p<palist->n; p++) { q = locate_seq(palist, x); if (q) { flag = 1; deletesP_seq(palist, q, 1); break; } } if(flag == 0) { printf("元素不存在\n"); return TRUE; } return FALSE; } // 删除顺序表中所有值为x的元素 int deletesV_seq(PSeqList palist, DataType x) { int p, q, flag=0; for(p=0; p<palist->n; p++) { q = locate_seq(palist, x); if (q) { flag = 1; deletesP_seq(palist, q, 1); } } if(flag == 0) { printf("元素不存在\n"); return FALSE; } return TRUE; } // 删除顺序表中下标为j的连续k个元素 int deletesP_seq(PSeqList palist, int p, int k) { int q, i; if(p+k > palist->n) { printf("out of range\n"); exit(0); } if(p == 0 && k == palist->n) { printf("顺序表被删空。\n"); exit(0); } for(i=0; i<k; i++) { if(p<0 || p > palist->n) { printf("Not exist!\n"); exit(0); } for(q=p; q<palist->n-1; q++) { palist->element[q] = palist->element[q+1]; } palist->n = palist->n-1; } return TRUE; } // 打印顺序表 void print(PSeqList palist) { int i; for(i=0; i<palist->n; i++) printf("%d\t", palist->element[i]); printf("\n"); } int main() { PSeqList lx_alist; int max,len,i,x,q; int temp; int j,k; printf("\n请输入线性表的最大长度值(<100):"); scanf("%d",&max); lx_alist = createNullList_seq(max); for(i=0; i<10; i++) { lx_alist->element[i] = i+3; lx_alist->n++; } printf("对数组赋初值:\n"); printf("现在的顺序表为:\n"); print(lx_alist); printf("\n修改其中一个元素的值:\n"); lx_alist->element[3] = 9; printf("现在的顺序表为:\n"); print(lx_alist); temp = 8; printf("\n删除第一个值为%d元素:\n", temp); deleteV_seq(lx_alist, temp); printf("现在的顺序表为:\n"); print(lx_alist); temp = 9; printf("\n删除全部值为%d元素:\n", temp); deletesV_seq(lx_alist, temp); printf("现在的顺序表为:\n"); print(lx_alist); temp = 0; k = 7; printf("\n删除下标为%d的连续%d个元素值:\n", temp, k); deletesP_seq(lx_alist, temp, k); printf("现在的顺序表为:\n"); print(lx_alist); system("pause"); return 0; }
相关文章推荐
- 数据结构—顺序表—删除某个元素
- 【数据结构_顺序表_List_1038】顺序表中重复元素的删除
- 数据结构顺序表删除所有特定元素x
- 数据结构顺序表应用1:多余元素删除之移位算法
- 数据结构——顺序表删除之建表算法
- 【数据结构_顺序表_List_1103】我记得是叫删除来着......
- 创建、删除、修改、复制表结构和复制数据SQL语句
- 数据结构顺序表
- SQL Server删除表中的所有数据,值保留表结构。
- c++练习004之数据结构(顺序表操作)
- 【程序员面试宝典】数据结构基础一单链表:创建|求长|插入|删除|排序|打印|逆置
- C#数据结构二:顺序表Sequence List
- 比较两个DataTable数据(结构相同),返回新增的,删除的,修改前的,修改后的 DataTable
- C#数据结构----顺序表操作
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- 【练习】数据结构与算法练习题之高效排序
- 数据结构——顺序表
- 练习 3.16 删除一组数据中的相同数据
- 删除SQL Server表中的数据,并把表的结构保存下来
- 结构之美:删除单链表指定位置的数据