数据结构指针的使用注意

单链表的插入:创建一个新的结点s,代替L的指针移动。这样做的好处是,不移动L的指针,使得L的状态不被改变,但同样能对L的链表操作达到相同的效果。

Status ListInsert(LinkList &L, ElemType data,int index){
	LinkList p,s;
	s = L;
	int i = 0; 
	while(s && i <(index -1)){
		s=s->next;
		i++;
	}
	if(!s||i>index-1) return ERROR;
	p = new LNode;
	p->data = data;
	p->next = s->next;
	s->next = p;
	return OK;
} 

数据结构指针的使用注意_第1张图片
运行结果图示:
数据结构指针的使用注意_第2张图片

如果不使用上面的做法的话,直接对L进行操作,L会移动自己的位置,再最后插入完毕之后,需要将L的位置归位。如下所示:

Status ListInsert(LinkList &L, ElemType data,int index){
	LinkList p,s;
	s = L;
	int i = 0; 
	while(L && i <(index -1)){
		L=L->next;
		i++;
	}
	if(!L||i>index-1) return ERROR;
	p = new LNode;
	p->data = data;
	p->next = L->next;
	L->next = p;
	L = s;
	return OK;
} 

运行结果图示:
数据结构指针的使用注意_第3张图片

你可能感兴趣的:(数据结构C++)