单链表操作1

假设单链表数据元素类型为整型,完成带头结点的有序单链表(非递减)插入算法

typedef int Elemtype;//定义类型

typedef struct LNode{

ELemtype data;//存放数据元素

struct LNode *next;//存放下一个元素地址
}LNode,*LinkList;//LNode为结点型,LinkList为指针型

int ListINsert(LinkList &L,Elemtype e)//L为头指针,要插入的元素为e相当于形参
{
LinkList p=L->next;//p为头结点,LinkList p等同于LNode *p
LinkList s=new LNode;//定义一个新节点用于存放要插入的元素;
s->data=e;

if(!p->next)
//链表为空时
{
p->next-s;//直接将要插入的元素(本身就是非递减)插到表尾
return OK;
}
while(p)
{
if(p-next&&p->next->data<=e) p=p->next;//p的下一个结点的data比e小,故e不能插入p后面,p后移;
else{
s->next=p->next;
p->next=s;//注意这两句顺序
return ok;//插入成功
}
}
}

 

上一篇:课后习题 2-14 针对带头结点的单链表,试编写以下函数


下一篇:第二章学习小结