数据结构
文章平均质量分 63
主要是一些数据结构方面的基础知识
番茄那个西红柿_z
不负韶华
展开
-
链表面试题(三)
1、判断两个链表是否相交,若相交,求交点。(假设链表不带环) 函数实现的功能为,判断相交,相交返回交点的数据,不相交返回-1。 函数实现源程序 //判断是否相交,不带环 int HasCross(SList *pHead1,SList *pHead2) { SList *pNode1 = pHead1; SList *pNode2 = pHead2; if((p...原创 2018-06-03 10:31:47 · 199 阅读 · 0 评论 -
链表面试题(二)
1、单链表排序(冒泡排序) 用三个指针来实现该功能,p1初始化为pHead,p2初始化为pHead->pNext,pEnd初始化为NULL,当p2不等于pEnd时,p1和p2的data进行比较,如果p1的data大于p2的data,p1和p2的值交换,否则p1和p2继续向后访问,pEnd指向pHead->pNext时,循环结束。 优化:创建一个标志位IsChange,如果交换将其置...原创 2018-06-02 17:41:06 · 267 阅读 · 0 评论 -
链表面试题(一)
本文所有的函数都是在上一篇单链表的基础上建立的。 1、从尾到头打印链表 分析:如下图所示,单链表为1、2、3、4、NULL,题目要求从尾到头打印,即打印的效果为4、3、2、1、NULL。我们可以用递归和循环来实现这一功能。 递归:递归的结束条件为pNodet为空,代码比较简单。 循环:可以定义两个指针,一个用来遍历链表,一个用来结束循环。如图所示,用pNode来遍历链表,让pNode从...原创 2018-06-01 18:47:18 · 565 阅读 · 0 评论 -
单向链表
单向链表 该程序实现了单向链表的增、删、查。 头文件: #ifndef __SLIST_H__ #define __SLIST_H__ #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef int DataType; typedef struct SList { ...原创 2018-06-01 18:40:13 · 341 阅读 · 0 评论 -
双向链表
双向链表 头文件DList.h: #ifndef __DLIST_H__ #define __DLIST_H__ #include <stdio.h> #include <assert.h> #include <stdlib.h> typedef int DataType; typedef struct DList { DataType d...原创 2018-06-01 18:44:48 · 237 阅读 · 0 评论 -
时间复杂度以及空间复杂度
为了编写出一个“好”程序,必须分析待处理的对象的特征以及各处理对象之间存在的关系。一般来说,用计算机解决一个具体问题时,大致需要以下几个步骤:首先要从具体的问题抽象出一个适当的数学模型,其次设计一个解决该数学模型的算法,编写出程序,并进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间的关系,然后用数学加以描述。 因此,我们可以说程序设计=数...原创 2018-05-28 17:34:06 · 630 阅读 · 1 评论