数据结构总结:(一)顺序表
2013-12-03 12:36
253 查看
ps: 插入删除要小心,注意插入的位置pos。。。
白老师 OJ:
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
第1行输出创建后的顺序表内容,包括顺序表实际长度和数据
每成功执行一次操作(插入或删除),输出执行后的顺序表内容
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容
3 777
1 888
1
9
0
5
7 11 22 777 33 44 55 66
8 888 11 22 777 33 44 55 66
7 11 22 777 33 44 55 66
error
error
44
实现连续多个插入,即从位置i开始插入多个数据
实现连续多个删除,即从位置i开始删除多个数据
第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据
第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据
第1行输出创建后的顺序表内容
第2行输出执行连续插入后的顺序表内容
第3行输出执行连续删除后的顺序表内容
已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
第1行输出创建后的顺序表内容
白老师 OJ:
Input
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
Output
数据之间用空格隔开第1行输出创建后的顺序表内容,包括顺序表实际长度和数据
每成功执行一次操作(插入或删除),输出执行后的顺序表内容
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容
Sample Input
6 11 22 33 44 55 663 777
1 888
1
9
0
5
Sample Output
6 11 22 33 44 55 667 11 22 777 33 44 55 66
8 888 11 22 777 33 44 55 66
7 11 22 777 33 44 55 66
error
error
44
#include <stdio.h> int A[10]; int n; void print(){ printf("%d ", n); int i; for(i=0;i<n;++i) printf("%d ", A[i]); printf("\n"); } void insert(int pos, int value){ int i; pos--; if(pos <0 || pos > n){printf("error\n"); return;} for(i=n-1;i>=pos;--i){ A[i+1] = A[i]; } A[pos] = value; ++n; print(); } void delete(int pos){ int i; pos--; if(pos <0 || pos > n-1){printf("error\n"); return;} for(i=pos;i<n;++i) A[i] = A[i+1]; --n; print(); } void find(int pos){ if(pos <1 || pos > n) {printf("error\n"); return;} else printf("%d\n", A[pos-1]); } int main(int argc, char const *argv[]) { int t, i, pos, value; scanf("%d", &n); for(i=0;i<n;++i) scanf("%d", &A[i]); print(); scanf("%d", &pos); scanf("%d", &value); insert(pos, value); scanf("%d", &pos); scanf("%d", &value); insert(pos, value); scanf("%d", &pos); delete(pos); scanf("%d", &pos); delete(pos); scanf("%d", &pos); find(pos); scanf("%d", &pos); find(pos); return 0; }
Description
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)实现连续多个插入,即从位置i开始插入多个数据
实现连续多个删除,即从位置i开始删除多个数据
Input
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据
第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据
Output
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开第1行输出创建后的顺序表内容
第2行输出执行连续插入后的顺序表内容
第3行输出执行连续删除后的顺序表内容
Sample Input
6 11 22 33 44 55 66 2 3 99 88 77 4 5Sample Output
6 11 22 33 44 55 66 9 11 99 88 77 22 33 44 55 66 4 11 99 88 66#include <stdio.h> int A[100]; int n; void print(){ int i; printf("%d ", n); for(i=0;i<n;++i) printf("%d ", A[i]); printf("\n"); } void insert(){ int i, num, pos; scanf("%d %d", &pos, &num); --pos; for(i=n-1;i>=pos;--i){ A[i+num] = A[i]; } for(i=0;i<num;++i) scanf("%d", &A[i+pos]); n+=num; print(); } void delete(){ int i, num, pos; scanf("%d %d", &pos, &num); --pos; for(i=pos+num;i<n;++i){ A[i-num] = A[i]; } n-=num; print(); } int main(int argc, char const *argv[]) { int i; scanf("%d", &n); for(i=0;i<n;++i) scanf("%d", &A[i]); print(); insert(); delete(); return 0; }
Description
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
Input
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
Output
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开第1行输出创建后的顺序表内容
Sample Input
3 11 33 55 5 22 44 66 88 99Sample Output
8 11 22 33 44 55 66 88 99#include <stdio.h> int A[50]; int B[50]; int C[100]; int main(int argc, char const *argv[]) { int i, n1, n2; scanf("%d", &n1); for(i=0;i<n1;++i) scanf("%d", &A[i]); scanf("%d", &n2); for(i=0;i<n2;++i) scanf("%d", &B[i]); int n3 = n1+n2; int j, k; j = k = 0; for(i=0;i<n3;++i){ if(A[j] < B[k] && j < n1){ C[i] = A[j]; ++j; } else if(A[j] >= B[k] && k < n2){ C[i] = B[k]; ++k; } else if(j>=n1){ C[i] = B[k]; ++k; } else if(k>=n2){ C[i] = A[j]; ++j; } } printf("%d ", n3); for(i=0;i<n3;++i) printf("%d ", C[i]); printf("\n"); return 0; }
相关文章推荐
- 数据结构图之一(基本概念,存储结构,两种遍历)
- hdu2795(线段树单点更新)
- MySQL索引背后的数据结构及算法原理
- 基本数据结构和算法在Linux内核中使用
- Stack的三种含义(数据结构、调用栈、内存区域)
- C#基础-C#数据结构,集合
- 数据结构之递归打印实数
- 数据结构课程设计(约瑟夫环)
- 程序员面试题精选100题(09)-链表中倒数第k个结点[数据结构]
- 数据结构--堆
- 数据结构 线性表 循环链表 插入与删除
- 数据结构 线性表 建立循环链表
- 数据结构 线性表 单链表的归并
- 数据结构 线性表 单链表 插入与删除
- 数据结构 线性表 建立单链表 尾插法
- 数据结构 线性表 建立单链表(头插法)
- 数据结构 线性表 顺序表合并
- 数据结构 线性表 顺序表的交集
- 数据结构 线性表 顺序表的归并 无序版
- 数据结构 线性表 顺序表的归并