int deletel(linklist *p,char ch)
{
linklist *q=p->next,*r=p;
// 这个声明没有问题, 不过这句话说明你的链表是带头结点的哈, 这个要清楚
while(q!=NULL && q->str!=ch )
{
r = q; // r 始终指向 q 的前一个节点 , 为删除节点做准备
q = q->next;
}
if(q == NULL) return 0;
r->next = q->next;
// 把 str=ch 的节点 的后一个节点 接到 该节点的前一个节点的后面去
delete q;
// 删除 节点
return 1;
}
linklist *q=p->next,*r;
这句,我猜你是想定义两个指针。应该这样写
linklist *q=p->next, r;
其实这个定义的意思是生成linklist*类型的变量,所以r前面不用再加*