面试题—链表操作
来源:互联网 发布:懒人做饭知乎 编辑:程序博客网 时间:2024/05/21 05:07
链表是最基本的数据结构,也是面试中较为常见的问题,链表的一些基本操作功能是必须能够实现,下面是一些关于链表基本的操作。
——链表的节点设置
typedef int Datatype;typedef struct SListNode{ Datatype data; //数据域 struct SListNode *next; //next指针域}SListNode;
——链表的基本操作
(1)删除一个无头单链表的非尾节点
(2)在无头单链表的一个非头结点前插入一个节点
(3)查找单链表的中间节点,要求只能遍历一次链表
(4)查找单链表的倒数第k个节点,要求只能遍历一次单链表
(5)从尾到头打印单链表(使用递归,压入堆栈)
(6)逆置单链表,不能创建节点
//利用头插法建立单链表void Frontinsert(SListNode *&phead){ SListNode *tmp = (SListNode *)malloc(sizeof(SListNode));} //删除一个无头单链表的非尾节点void DelNonTailNode(SListNode *pos){ assert(pos); assert(pos->next); //非尾节点 SListNode *del = pos->next; pos->data = del->data; pos->next = del->next; free(del);} //在无头单链表的一个非头结点前插入一个节点void insertFrontNode(SListNode *pos, Datatype x){ assert(pos); SListNode *tmp = _BuyNode(x); tmp->next = pos->next; pos->next = tmp; Datatype tmpdata = pos->data; pos->data = tmp->data; tmp->data = tmpdata;} //查找单链表的中间节点,要求只能遍历一次链表SListNode * FindMidNode(SListNode * phead){ SListNode *fast = phead; SListNode *slow = phead; while (fast) { if (fast->next != NULL) { fast = fast->next->next; } else { break; } slow = slow->next; } return slow;} //查找单链表的倒数第k个节点,要求只能遍历一次单链表SListNode * FindKNode(SListNode *phead, Datatype k){ SListNode *fast = phead; SListNode *slow = phead; while (fast && k--) { fast = fast->next; } if (fast == NULL) { return NULL; } while (fast) { fast = fast->next; slow = slow->next; } return slow;} //从尾到头打印单链表(使用递归,压入堆栈)void printTailToHead(SListNode *phead){ if (phead == NULL) { return; } else { printTailToHead(phead->next); printf("%d ", phead->next); }} //逆置单链表,不能创建节点SListNode *Reverse(SListNode *phead){ SListNode *cur = phead; SListNode *newhead = NULL; while (cur) { SListNode *tmp = cur; cur = cur->next; tmp->next = newhead; } return phead;}
本文出自 “无心的执着” 博客,谢绝转载!
0 0
- 面试题—链表操作
- 面试题—链表操作2
- 链表操作面试题
- 链表操作面试题
- 链表操作 算法面试题
- 雅虎面试题之链表操作
- 链表常用操作及面试题
- 常见面试题之链表操作
- 链表基本操作及面试题
- (程序员面试题)链表的基本操作
- 面试题5: 链表的相关操作
- LeetCode链表操作常见面试题汇总
- Java面试题链表、树和位操作
- 字符串操作——面试题总结
- 字符串操作——面试题总结
- 面试题-位操作
- 面试题:位操作
- 链表算法—面试题
- 数据结构——栈与队列
- 面试题——查找单链表的中间节点
- 类和对象—日期类
- DFS JAVA 模板
- 类和对象—复数类
- 面试题—链表操作
- C语言编写—通讯录(小项目)
- 浅谈为什么Java接口中不允许定义变量------转帖
- android混淆后webview显示问题
- 面试题—链表操作2
- 顺序表(C++实现)
- string类(c++)
- POJ2251-Dungeon Master
- 单链表(c++实现)