注册 登录
编程论坛 数据结构与算法

用顺序表和单链表编写

陈颖洁 发布于 2011-04-01 15:59, 786 次点击
在一个非递减有序线性表中,插入一个值为X的元素,使插入后的线性表仍为非递减有序。分别写出用顺序表和单链表表示时的算法。
3 回复
#2
loveshuang2011-04-03 02:13
这是数据结构里面的基本算法啊,还是多参考书上的伪代码自己写算法吧,很简单的。
#3
洪水哥2011-04-21 16:16
将指向x的指针与线性表中的元素一一比较,找到间于两个元素后,插入就行了
#4
枫亭水榭2011-04-28 00:19
顺序表
Status InsertSq(SqList &va,ElemType e)
{
    //顺序表va中的元素非递减有序,将x插入到顺序表的适当位置,以保持该表的有序性
   
    ElemType *newbase,*p;
   
    printf("%d\n",e);
    if(va.length>=va.listsize)
    {
        newbase=(ElemType*)realloc(va.elem,(va.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase)    exit(OVERFLOW);
        va.elem=newbase;
        va.listsize+=LISTINCREMENT;
    }
   
    for(p=va.elem+va.length-1;p>=va.elem;p--)
    {
        if(*p>e)
            *(p+1)=*p;
        else
        {
            *(p+1)=e;
            break;
        }
    }
    va.length++;   
    return OK;
}

单链表
Status ListInsertX_Link(LinkList L,ElemType e)
{
    /*在带头结点的单链表中适当位置之前插入元素e 保持非递减有序/**/
   
   
    LinkList p=L,s;
    while (p->next && p->next->data < e )
    {
        p=p->next;
    }        
    s=(LinkList)malloc(sizeof(struct LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
1