数据结构算法(二)

2014-11-24 02:45:30 · 作者: · 浏览: 4
**********************************************************************

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;//插入到表头

}

}

************************************************************************待续