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