| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4002 人关注过本帖
标题:编写两个函数,实现向这个数组中插入和删除元素,并保持数组有序 急!
只看楼主 加入收藏
summernight
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-10-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
编写两个函数,实现向这个数组中插入和删除元素,并保持数组有序 急!
已知一个有序整型数组a[] ,分别编写两个函数,实现向这个数组中插入和删除元素,并保持数组有序。
函数可参考如下定义:
int  Ins( int a[], int &n, int elem )        
//n为数组当前元素个数(不是数组容量)并且以引用形式调用,在函数中完成相应插入或删除的功能之后请修改n的值,以保证n存储当前数组元素的个数,以方便后续函数调用。
elem为要插入的元素,插入时要考虑数组是否已满。失败可返回一个特殊值标示,如-1。
int  Del( int a[], int &n, int elem )
  //n,elem同上,删除时要考虑数组是否为空,要删除的元素是否存在于数组之中,以及删除重复元素的问题。


这部分学的很晕啊。。。求助一下!
搜索更多相关主题的帖子: 元素 函数 删除 编写 
2009-11-15 13:48
聂雨
Rank: 2
等 级:论坛游民
帖 子:26
专家分:10
注 册:2009-11-15
收藏
得分:10 
#include <stdio.h>
void main()
{
int Ins(int a[],int &n,int elem);int i,j;
if(a[]_num==a)
printf("%d",1);
if(i<1)
i=0;
if(i>a[]_num)
i=a[]_num;
for(j=a[]_num;j>i;i--)
a[j]=a[j-1];
a[j]=elem;
n++;
}

2009-11-15 14:07
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:10 
程序代码:
#include<stdio.h>
#define N 8
int lns(int *,int ,int );
int my_del(int *,int ,int);
void print(int *,int);
int main(void)
{
    int a[N]={1,3,5,7};
    int i,n,k,elsm;
    print(a,4);
    n=4;
    while(1)
    {
        printf("input elsm  > :");
        if((scanf("%d",&elsm))!=1)
        {
            break;
        }
        k=lns(a,n,elsm);
        if(!k)
        {
            break;
        }
        n=k;
        print(a,n);
    }
    print(a,n);
    while(getchar()!='\n')
        ;
    while(1)
    {
        printf("delete,input elsm > :");
        if((scanf("%d",&elsm))!=1)
        {
            break;
        }
        k=my_del(a,n,elsm);
        if(!k)
        {
            break;
        }
        n=k;
        print(a,n);
    }
    print(a,n);
    return 0;
}
int lns(int *a,int n,int elsm)
{
    int i,j;
    if(n>=N)
    {
        return 0;
    }
    for(i=0;i<n&&a[i]<elsm;++i)
        ;
    for(j=n;j>i;--j)
    {
        a[j]=a[j-1];
    }
    a[i]=elsm;
   
    return n+1;
}
int my_del(int *a,int n,int elsm)
{
    int i,j,k;
    printf("elsm=%d\n",elsm);
    if(n==0)
    {
        return 0;
    }
    for(i=j=0,k=1;j<n;++i,++j)
    {
        if(a[i]!=elsm)
        {
            a[i]=a[j];
        }
        else
        {
            a[i]=a[j+1];
            ++j;
            k=0;
        }
    }
    return k?0:n-1;
}
void print(int *a,int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        printf("%-4d",a[i]);
    }
    puts("");
}

2009-11-15 20:05
快速回复:编写两个函数,实现向这个数组中插入和删除元素,并保持数组有序 急 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019425 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved