面试题13:在O(1)时间删除链表结点
来源:互联网 发布:mac联网恢复系统要多久 编辑:程序博客网 时间:2024/05/23 12:33
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
思路:首先要理解题意,容易误以为是删除值为a的结点,结点指针和头指针都是指向同一个链表,操作
1,链表是否含头结点
2,链表只有一个结点,结点指针指向它
3,结点指针指向链尾,需要顺序遍历,找到结点指针的前一个指针才能进行删除,O(n)
4,结点指针不在链尾,O(1),将结点指针下一个指针赋值相同的值,删除结点指针下一个指针有相同的效果。
如果这个链表含头结点,则第2种情况包含在第4种中
源代码
#include "stdio.h"#include "stdlib.h"typedef struct LNode{int data;struct LNode *next;}LNode,*LinkList;void create_head_list(LinkList &L){LinkList p;int e;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;printf("输入链表序列,以0结束:");scanf("%d",&e);while(e){p=(LinkList)malloc(sizeof(LNode));p->data=e;p->next=L->next;L->next=p;scanf("%d",&e);}}//链表含有头结点void DeleteNode(LinkList &head,LinkList p){///if(head->next)LinkList L,q;L=head;if(p->next == NULL){while(L->next != NULL){q=L;L=L->next;}q->next=NULL;}else{p->data=p->next->data;q=p->next;p->next=q->next;free(q);}}void list_traverse(LinkList L){while(L->next!=NULL){printf("%d ",L->next->data);L=L->next;}}void main(){LinkList L;create_head_list(L);LinkList p;p=L->next->next;printf("结点指针指向的数据:%d",p->data);printf("\n输出删除前的链表:");list_traverse(L);DeleteNode(L,p);printf("\n输出删除后的链表:");list_traverse(L);}
结果
第四种情况
输入链表序列,以0结束:1 2 3 4 5 0结点指针指向的数据:4输出删除前的链表:5 4 3 2 1输出删除后的链表:5 3 2 1
第三种情况
输入链表序列,以0结束:4 5 0结点指针指向的数据:4输出删除前的链表:5 4输出删除后的链表:5
- 面试题13:在O(1)时间删除单链表结点
- 面试题13:在O(1)时间删除链表结点
- [剑指offer][面试题13]在O(1)时间删除链表结点
- 面试题13 在o(1)时间删除链表的给定结点
- 面试题13:在O(1)时间删除链表结点
- 面试题13-在o(1)时间删除链表结点
- 《剑指Offer》面试题13:在O(1)时间删除链表结点
- 【剑指Offer学习】【面试题13 :在O(1)时间删除链表结点】
- 《剑指Offer》学习笔记--面试题13:在O(1)时间删除链表结点
- 剑指offer--面试题13:在O(1)时间删除链表结点--Java实现
- 面试题13:在O(1)的时间删除链表结点
- 面试题13:在O(1)时间删除链表结点
- 剑指offer-面试题13:在O(1)时间删除链表结点
- 剑指offer之面试题13在O(1)时间删除链表结点
- 剑指Offer----面试题13:在O(1)时间删除链表结点
- 剑指Offer:面试题13——在O(1)时间删除链表结点
- 剑指offer面试题13:在O(1)时间删除链表结点
- 剑指offer——面试题13:在O(1)时间删除链表结点
- Flex与Java通信 BlazeDS方式 解析xml
- Tomcat源码分析(三)------ 可携带状态的线程池 .
- XP 下比较有用的快捷键
- 从需求出发来看关系模型与非关系模型–时代的变革1
- windows下安装和使用memcached
- 面试题13:在O(1)时间删除链表结点
- Tomcat源码分析(四)------ Request和Response处理的全过程 .
- 通过异或交换值
- Java中Exception的种类
- temp
- 解析spring schedule 任务调度
- 表驱动法(决策表、查询表)介绍
- a href 中调用js的几种方法
- 软件度量知识点