数据结构总结:(一)顺序表
来源:互联网 发布:手机怎么看淘宝直播 编辑:程序博客网 时间:2024/06/04 18:12
ps: 插入删除要小心,注意插入的位置pos。。。
白老师 OJ:
Input
第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
Output
数据之间用空格隔开
第1行输出创建后的顺序表内容,包括顺序表实际长度和数据
每成功执行一次操作(插入或删除),输出执行后的顺序表内容
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容
Sample Input
Sample Output
1 #include <stdio.h> 2 int A[10]; 3 int n; 4 void print(){ 5 printf("%d ", n); 6 int i; 7 for(i=0;i<n;++i) 8 printf("%d ", A[i]); 9 printf("\n");10 }11 12 void insert(int pos, int value){13 int i;14 pos--;15 if(pos <0 || pos > n){printf("error\n"); return;}16 for(i=n-1;i>=pos;--i){17 A[i+1] = A[i];18 }19 A[pos] = value;20 ++n;21 print();22 }23 24 void delete(int pos){25 int i;26 pos--;27 if(pos <0 || pos > n-1){printf("error\n"); return;}28 for(i=pos;i<n;++i)29 A[i] = A[i+1];30 --n;31 print();32 }33 34 void find(int pos){35 if(pos <1 || pos > n) {printf("error\n"); return;}36 else printf("%d\n", A[pos-1]);37 }38 39 int main(int argc, char const *argv[])40 {41 int t, i, pos, value;42 scanf("%d", &n);43 for(i=0;i<n;++i)44 scanf("%d", &A[i]);45 print();46 47 scanf("%d", &pos);48 scanf("%d", &value);49 insert(pos, value);50 51 scanf("%d", &pos);52 scanf("%d", &value);53 insert(pos, value);54 55 scanf("%d", &pos);56 delete(pos);57 58 scanf("%d", &pos);59 delete(pos);60 61 scanf("%d", &pos);62 find(pos);63 64 scanf("%d", &pos);65 find(pos);66 67 return 0;68 }
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
Sample Output
1 #include <stdio.h> 2 int A[100]; 3 int n; 4 5 void print(){ 6 int i; 7 printf("%d ", n); 8 for(i=0;i<n;++i) 9 printf("%d ", A[i]);10 printf("\n");11 }12 13 14 void insert(){15 int i, num, pos;16 scanf("%d %d", &pos, &num);17 --pos;18 for(i=n-1;i>=pos;--i){19 A[i+num] = A[i];20 }21 22 for(i=0;i<num;++i)23 scanf("%d", &A[i+pos]);24 n+=num;25 print();26 }27 28 void delete(){29 int i, num, pos;30 scanf("%d %d", &pos, &num);31 --pos;32 for(i=pos+num;i<n;++i){33 A[i-num] = A[i];34 }35 n-=num;36 print();37 }38 39 int main(int argc, char const *argv[])40 {41 int i;42 scanf("%d", &n);43 for(i=0;i<n;++i)44 scanf("%d", &A[i]);45 print();46 insert();47 delete();48 return 0;49 }
Description
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)
已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
Input
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等
第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
Output
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开
第1行输出创建后的顺序表内容
Sample Input
Sample Output
#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;}
- 数据结构总结:(一)顺序表
- 数据结构(一):顺序表
- 数据结构一顺序表
- 数据结构学习之顺序表(一)
- 数据结构学习笔记(一) 顺序表
- 数据结构之顺序表(一)
- Java与数据结构(一) 顺序表
- 数据结构学习笔记(一) 顺序表
- 数据结构(一)顺序表3:顺序表常见题型
- 数据结构(一)数据结构算法与顺序表
- python 数据结构线性表(一) --- 顺序存储表
- 数据结构(一)顺序表、链表以及队列
- 数据结构 (一)顺序表&链表实现
- 数据结构之线性结构(顺序表)【一】
- 数据结构(一)——顺序表及实现
- 线性表数据结构解读(一)顺序存储结构ArrayList
- 再学数据结构之顺序表(一)
- 数据结构(一)---顺序表的实现---java版
- 操作系统课程:调度算法
- PLAN :昔日未来
- 操作系统实验3:内存分配与回收
- JAVA 作业:图形界面
- Love myself...
- 数据结构总结:(一)顺序表
- 关于iTunes随机播放和我所不知道的自己
- Printk 标志优先级别
- LInux 2.6 编译内核出现Question
- Linux内核编译和运行
- 数据结构总结:(二)链表
- Markdown 代码测试!
- Markdown 代码测试
- test maekdown 2