数据结构总结:(一)顺序表

来源:互联网 发布:手机怎么看淘宝直播 编辑:程序博客网 时间: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

6 11 22 33 44 55 66
3 777
1 888
1
9
0
5

Sample Output

6 11 22 33 44 55 66
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

 

 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

6 11 22 33 44 55 66 2 3 99 88 77 4 5

Sample Output

6 11 22 33 44 55 66 9 11 99 88 77 22 33 44 55 66 4 11 99 88 66
 
 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

3 11 33 55 5 22 44 66 88 99

Sample 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;}

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击