8.函数GetElem在单链表中的实现
StatusGetElem_L(LinkList L,int I,ElemType &e)
{
L为带头结点的单链表的头指针,当第i个元素存在时,其值赋给e并返回OK,否则返回error
p= L->next;j=1;//初始化,p指向第一个结点,j为计数器
while(p&&j
{
p= p->next;
++j;
}
if(!p || j>i)return ERROR;//第i个元素不存在
e =p->data;//取第i个元素
return OK;
}
*******************************************************************************************************************************
9.在单链表中实现插入与删除
*************插入
StatusListInsert_L(LinkList &L,int I,ElemType e)
{
//在带头结点的单链线性表L中第i个位置之前插入元素e
P= L;j=0;
while(p&&j
{
p= p->next;++j//寻找第i-1个结点
}
if(!p ||j>i) returnERROR;//i小于1或者大于表长
s =(LinkList)malloc(sizeof(LNode));//生成新结点
s->data = e;
s->next =p->next;
p->next = s;
return OK;
}
**********************删除
StatusListDelete_L(LinkList &L,int i ,ElemType &e)
{
//在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
p=L;j=0;
while(p->next&& j
{
p = p->next;
++j;
}
if(!(p->next)|| j>i-1) return ERROR;//删除位置不合理
q= p-next;p->next = q->next;//删除并释放结点
e= q->data;free(q);
returnOK;
}
**********************************************************************************************************************************
11.从表尾到表头逆向建立单链表的算法
Void CreateList_L(LinkList &L,int n)
{
//逆序位输入n个元素的值,建立带表头结点的单链线性表L
L= (LinkList)malloc(sizeof(LNode));
L->next= NULL;//先建立一个带头结点的单链表
for(i=n;i>0;++i)
{
p=(LinkList)malloc(sizeof(LNode));//生成新结点
scanf(&p->data);//输入元素值
p->next = L->next;L-next =p;//插入到表头
}
}
************************************************************************待续