正在加载图片...
LNode* p, s J p=(LNode )L /*p指向链表头结点* while(p && j<i-1) (p=p->next; ++3: 3 /*执行i-1次定位第i-1个结点* f(plj>i-1) return ERROR;/p为NULL时表示没有第i1个结点 j>-1表示i<=0时插入序号错* (LinkList) malloc(sizeof(LNode)) S->next=p->next p->next=s, /*s所指新结点插入p所指第i-1个结点之后 return OK. 功能:线性表删除操作,删除单链表的第i个结点 输入:单链表的头指针L、位置i 输出:成功时返回OK 本本李*率***幸*李*本*亲率本本事本春**率幸本幸率幸春率本幸*率*/ int List Delete( LinkList L, int 1) LNode *p, *q; IntJ; p=( LNode*)L;/*p指向链表头结点* while(p->next & j<i-1) 行i1次,使p定位第i1个结点 p->next指向结点第i个结点, search for ith node* ((p-next)>i-1)return ERROR; 功能:读取线性表第i个结点的值 ☆输入:单链表的头指针L、位置i ★输出:成功时返回OK、通过指针e返回第i个结点的值* 失败返回 ERROR Int p=( LNode*)L->next;,/p指向链表第1个结点* while(p&&j<i) {p=p->next++j;}/*执行i-l次,使p定位第i个结点 if(pll>1) return ERROR;LNode *p,*s; int j; p=(LNode *) L; /*p 指向链表头结点*/ j=0; while (p && j<i-1) {p=p->next;++j;} /* 执行 i-1 次定位第 i-1 个结点 */ if (!p || j>i-1) return ERROR; /*p 为 NULL 时表示没有第 i-1 个结点 j>i-1 表示 i<=0 时插入序号错*/ s=(LinkList) malloc(sizeof(LNode)); s->data=e; s->next=p->next;p->next=s; /*s 所指新结点插入 p 所指第 i-1 个结点之后*/ return OK; } /********************************************************** ** 功能:线性表删除操作,删除单链表的第 i 个结点 ** ** 输入:单链表的头指针 L、位置 i ** ** 输出: 成功时返回 OK ** **********************************************************/ int ListDelete(LinkList L,int i) { LNode *p,*q; int j; p=(LNode *) L; /*p 指向链表头结点*/ j=0; while (p->next && j<i-1) {p=p->next;++j;} /* 执行 i-1 次,使 p 定位第 i-1 个结点 */ p->next 指向结点第 i 个结点, search for ith node*/ if (!(p->next)||j>i-1) return ERROR; q=p->next;p->next=q->next; free(q); return OK; } /********************************************************** ** 功能:读取线性表第 i 个结点的值 ** ** 输入:单链表的头指针 L、位置 i ** ** 输出: 成功时返回 OK、通过指针 e 返回第 i 个结点的值 ** ** 失败返回ERROR ** **********************************************************/ int GetElem(LinkList L,int i, ElemType *e) { LNode *p,*s; int j; p=(LNode *) L->next; /*p 指向链表第 1 个结点*/ j=1; while (p && j<i) {p=p->next;++j;} /* 执行 i-1 次,使 p 定位第 i 个结点 */ if (!p||j>i) return ERROR;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有