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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值