并构造测试用例进行测试。
linklist delx(linklist head,datatype x)
{
linklist p=head,q=NULL;
while(head!=NULL&&p->info!=x){q=p;p=p->next;} //寻找数x
if(!q) //如果第一个结点是数x时,这里的非q我理解为若第一个结点不是x时,则是q
head=head->next;
else
q->next=p->next; //数x在后面的结点
free(p); //释放节点p
return head;
}
int main()
{ datatype x;
linklist head;
head=creatbyqueue(); /*尾插入法建立单链表*/
print(head);
printf("请输入要删除的值:");
scanf("%d",&x);
head=delx(head,x); /*删除单链表的第一个值为x的结点*/
print(head);
delList(head); /*释放单链表空间*/
return 0;
}
源代码:http://blog.csdn.net/wlxsq/article/details/50394243
开始连数据域指针域都没有搞懂,你怎么下手!!
p->next代表着指向下一个数据元素的指针,p->info(在本题中)指向的是数据。
有头节点与无头节点到底有什么区别??(它们的使用处于个人喜好)
头节点的数据域一般无意义(当然也有可以存储链表长度),方便插入
它们的尾插和头插参考于:http://blog.csdn.net/kai8wei/article/details/45286441
后继将补充。。。