1、单链表
-
单链表分为带头结点和不带头节点两种
- 不带头节点,空表判断:L==NULL。写代码不方便
- 带头结点,空表判断:L->next==NULL。写代码更方便
-
用代码定义一个单链表:
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;
2、带头结点的单链表实现按位插入
- ListInsert(&L,i,e): 插入操作。在表L中的第i个位置上插入指定元素e。(找到第i-1个结点,将新节点插入其后)
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
bool ListInsert(LinkList &L,int i,ElemType e){
if(i<1)
return false;
LNode *p; //指针p指向当前扫描到的结点
int j=0; //当前p指向的是第几个结点
p = L; //L指向头结点,头结点是第0个结点(不存数据)
while(p!=NULL && j<i-1){
//循环找到第i-1个结点
p=p->next;
j++;
}
if(p==NULL) //i值不合法,超出链表当前长度
return false;
LNode *s = (LNode *)malloc(sizeof(LNode))