编程论坛
注册
登录
编程论坛
→
数据结构与算法
用顺序表和单链表编写
陈颖洁
发布于 2011-04-01 15:59, 786 次点击
在一个非递减有序线性表中,插入一个值为X的元素,使插入后的线性表仍为非递减有序。分别写出用顺序表和单链表表示时的算法。
3 回复
#2
loveshuang
2011-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