1、从尾到头打印链表
2、删除一个无头链表的非尾结点
单链表结构以及Find函数参见 2016-1-2 13:56 发表博客
void Print_T_to_H(SListNode*&pHead)//从尾到头打印链表 { //可用递归实现,以结点为空为结束条件 if (pHead != NULL) { Print_T_to_H(pHead->next); printf("%d ", pHead->data); } } void Del_N_tail(SListNode* pos) //删除一个无头链表的非尾结点 { //当为空、尾时不删除 //思路:转换为删除pos的下一个结点,删除之前把值传给pos结点 if (pos->next) { pos->data = pos->next->data; SListNode *tmp = pos->next; pos->next = tmp->next; free(tmp); tmp = NULL; } } void Test4()// Print_T_to_H/Del_N_tail { printf("//Test4() Print_T_to_H/Del_N_tail \n"); SListNode *LL = NULL; PushBack(LL, 1); PushBack(LL, 2); PushBack(LL, 3); PushBack(LL, 4); PrintNode(LL); Print_T_to_H(LL); printf("\n"); Del_N_tail(Find(LL,3));//中间结点 Print_T_to_H(LL); printf("\n"); Del_N_tail(Find(LL, 1));//首元结点 Print_T_to_H(LL); printf("\n"); Del_N_tail(Find(LL, 4));//尾结点 Print_T_to_H(LL); }