设为首页 加入收藏

TOP

C语言经典链表面试题分享(四)
2018-02-13 12:56:17 】 浏览:614
Tags:语言 经典 表面 试题 分享
TailToHead(a);//非递归 时间复杂度n平方 SListPrintTailToHeadR(a);//递归 } void Test2()//2.删除一个无头单链表的非尾节点(不能遍历链表) { SListNode *a=NULL; SListNode *pos=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); SListPrint(a); pos=SListFind(a,3); SListDelNonTailNode(pos); SListPrint(a); } void Test3()//3.在无头单链表的一个节点前插入一个节点(不能遍历链表) { SListNode *a=NULL; SListNode *pos=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); SListPrint(a); pos=SListFind(a,3); SListInsertFrontNode(pos,8); SListPrint(a); } void Test4()//4.单链表实现约瑟夫环(JosephCircle) { SListNode* list = NULL; SListNode* tail; SListPushBack(&list, 1); SListPushBack(&list, 2); SListPushBack(&list, 3); SListPushBack(&list, 4); SListPushBack(&list, 5); tail = SListFind(list, 5); tail->next = list; printf("最后的幸存者:%d\n", SListJosephCircle(list, 3)->data); } void Test5()//5.//逆置/反转单链表 { SListNode* list = NULL; SListNode* newList; SListPushBack(&list, 1); SListPushBack(&list, 2); SListPushBack(&list, 3); SListPushBack(&list, 4); SListPushBack(&list, 5); newList = SListReverse(list); SListPrint(newList); } void Test6()//6.单链表排序(冒泡排序&快速排序) { SListNode* list = NULL; SListPushBack(&list, 1); SListPushBack(&list, 22); SListPushBack(&list, 33); SListPushBack(&list, 40); SListPushBack(&list, 5); SListBubbleSort(list); SListPrint(list); } void Test7()//7.合并两个有序链表,合并后依然有序 { SListNode *a=NULL; SListNode *b=NULL; SListNode *c=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); SListPushBack(&a,7); SListPushBack(&a,9); SListPushBack(&b,2); SListPushBack(&b,2); SListPushBack(&b,3); SListPushBack(&b,4); SListPushBack(&b,5); c=SListMerge(a,b); SListPrint(c); } void Test8()//8.查找单链表的中间节点,要求只能遍历一次链表 { SListNode *a=NULL; SListNode *b=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); b=SListFindMidNode(a); SListPrint(b); } void Test9()//9.查找单链表的倒数第k个节点,要求只能遍历一次链表 { SListNode *a=NULL; SListNode *b=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); b=SListFindTailKNode(a,2); SListPrint(b); } void Test10()//10.删除链表的倒数第K个结点 { SListNode *a=NULL; SListNode *b=NULL; SListPushBack(&a,1); SListPushBack(&a,2); SListPushBack(&a,3); SListPushBack(&a,4); SListPushBack(&a,5); SListFindPop(a,3); SListPrint(a); } void Test11_12_13()//11.判断是否带环 12.求环的长度 13。求环的入口点 { SListNode *a=NULL; SListNode *enter=NULL; SListNode *tail=NULL; SListNode *cur=NULL; SListPushBack(&a,1
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言_分支与循环语句使用技巧 下一篇C题解:有一棵树,一开始每个点有..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目