C语言,单向链表 不知道前驱指针,如何删除某一节点。 情况考虑详尽一些!

C语言,单向链表
不知道前驱指针,如何删除某一节点。
情况考虑详尽一些!Help

p非尾结点:用p的下一节点q代替p(p->data=q->data,p->next=q->next),然后删除q节点。
p是尾结点:从头结点开始遍历整个链表直到倒数第二个节点q,令q->next=NULL,然后删除p节点。
温馨提示:答案为网友推荐,仅供参考