打印
[新手园地]

int InsertList(SeqList *L,int i,DataType e)

[复制链接]
3247|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tao560532|  楼主 | 2011-10-2 19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
tao560532|  楼主 | 2011-10-2 19:35 | 只看该作者
int InsertList(SeqList *L,int i,DataType e)   
/*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/
{
    int j;
        if(i<1||i>L->length+1)                                /*在插入元素前,判断插入位置是否合法*/
        {
        printf("插入位置i不合法!\n");
        return -1;
        }
        else if(L->length>=ListSize)                /*在插入元素前,判断顺序表是否已经满,不能插入元素*/
        {
                printf("顺序表已满,不能插入元素。\n");
                return 0;
        }
        else
        {
                for(j=L->length;j>=i;j--)                        /*将第i个位置以后的元素依次后移*/
                        L->list[j]=L->list[j-1];
        L->list[i-1]=e;                        /*插入元素到第i个位置*/
        L->length=L->length+1;                /*将顺序表长增1*/
                        return 1;
        }
}
这个是函数原型

使用特权

评论回复
板凳
tao560532|  楼主 | 2011-10-2 19:35 | 只看该作者
void MergeList(SeqList A,SeqList B,SeqList *C)
/*合并顺序表A和B的元素到C中,并保持元素非递减排序*/
{
        int i,j,k;
        DataType e1,e2;
        i=1;j=1;k=1;
        while(i<=A.length&&j<=B.length)
        {
                GetElem(A,i,&e1);                                /*取出顺序表A中的元素*/
                GetElem(B,j,&e2);                                /*取出顺序表B中的元素*/
                if(e1<=e2)                                                /*比较顺序表A和顺序表B中的元素*/
                {
                        InsertList(C,k,e1);                        /*将较小的一个插入到C中*/
                        i++;                                                /*往后移动一个位置,准备比较下一个元素*/
                        k++;
                }
                else
                {
                        InsertList(C,k,e2);                        /*将较小的一个插入到C中*/
                        j++;                                                /*往后移动一个位置,准备比较下一个元素*/
                        k++;
                }

        }
        while(i<=A.length)                                        /*如果A中元素还有剩余,这时B中已经没有元素*/
        {
                GetElem(A,i,&e1);
                InsertList(C,k,e1);                                /*将A中剩余元素插入到C中*/
                i++;
                k++;
        }
        while(j<=B.length)                                        /*如果B中元素还有剩余,这时A中已经没有元素*/
        {
                GetElem(B,j,&e2);
                InsertList(C,k,e2);                                /*将B中剩余元素插入到C中*/
                j++;
                k++;
        }
        C->length=A.length+B.length;                /*C的表长等于A和B的表长的和*/
}这个是函数调用

使用特权

评论回复
地板
tao560532|  楼主 | 2011-10-2 19:41 | 只看该作者
函数原型定义
int InsertList(SeqList *L,int i,DataType e)   

涛行**(578645627)  19:56:22
函数调用      InsertList(C,k,e2);                        
if(InsertList(&B, i, b[i-1])==0)
有两种
而我把 InsertList(C,k,e2); 改成 InsertList(&C,k,e2);反而出错了
请教高手

使用特权

评论回复
5
tao560532|  楼主 | 2011-10-2 19:42 | 只看该作者
请教高手

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术源于积累,成功源于执着!

31

主题

366

帖子

1

粉丝