单链表的补充(带头结点)
在带头结点的单链表中llist中,p所指结点前面插入值为x的新结点,并返回插入成功与否的标志:
int insertPre_link(LinkList llist,PNode p,DataType x){
PNode q = (DataType*)malloc(sizeof(struct Node));
PNode r; //r是p的前驱结点
if (llist == NULL) return 0;
if (q == NULL){
printf("OVER");
return 0;
}
//找前驱结点
r = llist;
while(r->link != NULL && r->link != p) r = r->link;
if (r == NULL) printf("NOTFIND P");
r->info = x;
//插入结点
q->link = r->link;
r->link = q;
return 1;
}
在带头结点的单链表llist中,删除p所指的结点,并返回删除成功与否的标志:
int deleteP_link(LinkList llist,PNode p){
//先找前驱结点
PNode q;
if (llist == NULL){
return 0;
}
q = llist;
while(q->link != NULL && q->link != p) q = p->link;
if (q == NULL) return 0;
q->link = q->link;
free(p); //删除结点一定不要忘记释放内存
return 1;
}

浙公网安备 33010602011771号