<笔试><面试>单链表相关(1)从尾到头打印链表、删除一个无头链表的非尾结点

来源:互联网 发布:无法备案的域名 编辑:程序博客网 时间:2024/06/03 18:51

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);}


wKioL1aIhVeyVdXBAAAgIAzllXw963.png

0 0
原创粉丝点击