BNUOJ 4101(线性表的插入与删除)

线性表插入与删除操作


Time Limit: 1000 ms     Case Time Limit: 1000 ms     Memory Limit: 65536 KB
Submit: 78     Accepted: 40

[Prev][Next]

Description

 

 实现线性表的插入和删除基本操作

 

Input

 

 第一行给出线性表内现有数据元素的数目N,1<=N<=10;第二行给出N个整数:a1、a2、a3…aN,整数之间用一个空格隔开,表示线性表现有的数据元素。第三行给出两个整数K、E1,1<=K<=N,表示在第K个元素前插入值为E1的数据元素;第四行给出一个整数E2,表示在线性表中删除第一个值为E2的数据元素(假定线性表里一定存在值为E2的数据元素)。

 

Output

 

 在一行内按次序输出进行插入和删除后线性表的所有数据元素,数据元素之间用一个空格隔开。

 

Sample Input

8
12 13 21 24 28 30 42 77
5 25
24

Sample Output

12 13 21 25 28 30 42 77
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int N=15;
/*
C语言中常量都用const定义 
#define定义的只是宏,在预处理的时候就都被替换掉了  
const定义的应该是其值不可以被改变的变量,就是常量了,  
它在运行的时候是确实在内存里(栈,堆,或是静态区)分配了内存的,  
是有自己的地址的,可以做求地址运算。 
*/
int vis[N];
int T;
void insert(int pos,int num)
{
    int i,j;
    for(i=T;i>=pos;i--)
        vis[i+1]=vis[i];
    vis[pos]=num;
    T++;
}
void delete_output(int num)//delete为关键字
{
    int i,j;
    for(i=1;i<=T;i++)
    if(vis[i]==num)
        break;
    for(i;i<=T;i++)
        vis[i]=vis[i+1];
    T--;
    printf("%d",vis[1]);
    for(i=2;i<=T;i++)
        printf(" %d",vis[i]);
    printf("\n");
}
         
int main()
{
    int i,j;
    int pos,num1,num2;
    scanf("%d",&T);
    for(i=1;i<=T;i++)
        scanf("%d",vis+i);
    scanf("%d%d",&pos,&num1);
    insert(pos,num1);
    scanf("%d",&num2);
    delete_output(num2);
    return 0;
}
    

 

posted @ 2012-07-30 21:25  加拿大小哥哥  阅读(434)  评论(0编辑  收藏  举报