- 数据结构之单链表区第i个元素的算法算法思路:
- 1.声明一个结点p指向第一个结点,初始化j从1开始
- 2.当j<i时就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1
- 3.若到链表末尾p为空,则说明第i个元素不存在
- 4.否则查找成功,将欲删除的结点p->pNext赋值给q
- 5.将q结点数据赋给e
- 6.释放q结点
- 7.返回成功
- 单链表的数据结构:
- typedef int ElemType;
- typedef struct NODE
- {
- ElemType data;
- struct NODE *pNext;
- }NODE,*LinkList;
- 实现算法:
- /*初始条件:顺序线性表L已存在,1<=i<=ListLength(L)*/
- /*操作结果:删除第i个元素并用e返回其值,L的长度减1 */
- Status GetElem(LinkList L, int i, ElemType *e)
- {
- LinkList P;
- P = L->pNext;
- int j = 1;
- while(p && j < i)
- {
- p = p->pNext;
- ++j;
- }
- if(!p || j > i)
- {
- return ERROR;
- }
- q = p->pNext;
- p->next = q->next;
- *e = q->data;
- free(q);
- return OK;
- }
- 2011年12月30日21:03:10