线性表之链表实现:单向链表、循环链表、双向链表
线性表 单向链表实现: 优点:便于插入和删除 缺点:查找数据需要遍历 声明 一个数据+一个指针 typedef struct LNode *List; struct LNode { int Data; List next; }; 求表长 遍历表,当指向节点的指针为NULL时停止 int Length(List PtrL) { List p = PtrL; int j = 0; while (p) { p = p->next; j++; } return j; } 查找数据 当指针不为NULL或者未找到数据时,继续循环 按值查找 List Find(int X, List PtrL) { List p = PtrL; while (p!=NULL && p->Data != X)p = p->next; return p; } 按序号查找 List FindKth(int K, List PtrL) { List p = PtrL; int i = 1; while (p != NULL&&i < K) { p = p->next; i++; } if (i == K)return p; else return NULL; } 插入数据 当插在第一个位置时:创建节点,让该节点直接指向头结点。 当插在第i个位置时:创建节点,让该节点指向该位置的后一个节点