
DATASTRUCTURE
文章平均质量分 71
fg100emil
这个作者很懒,什么都没留下…
展开
-
关于list-(1) 单向list
实现一个整型链表,支持插入,删除操作(有特殊要求,都是在指定节点后进行操作),并写一个对链表数据进行降序排序的方法。那我们不妨以一个线性链表进行编程。// 单链表结构体为typedef struct LNode { int data; struct LNode *next;}LNode, *pLinkList;// 单链表类class LinkList{private: pL转载 2006-11-27 16:53:00 · 665 阅读 · 0 评论 -
关于list-(2) 双向list
1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数答://假设线性表的双向链表存储结构typedef struct DulNode{ struct DulNode *prior; //前驱指针 ElemType data; //数据 struct DulNode *next; //后继指针}DulNode,*DuLinkList;/转载 2006-11-27 17:20:00 · 814 阅读 · 0 评论 -
关于list-(5) 单向list反转
链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka {原创 2006-11-27 20:32:00 · 2046 阅读 · 0 评论 -
栈的实现+进制转换
顺序栈的实现(SqStack, C++版) 作者不详 /* stack.h */#ifndef __SQSTACK_H__#define __SQSTACK_H__ 1#include extern "C" { void exit(int); }const int nDefaultStackSize = 50; //缺省Stack元素个数//以下为栈的顺序存储结构(顺序栈)的原创 2006-11-27 21:21:00 · 766 阅读 · 0 评论 -
关于list-(4) 判断链表是否存在环
判断链表是否存在环问题:判断一个链表是否存在环,例如下面这个链表就存在一个环:例如N1->N2->N3->N4->N5->N2就是一个有环的链表,环的开始结点是N5这里有一个比较简单的解法。设置两个指针p1,p2。每次循环p1向前走一步,p2向前走两步。直到p2碰到NULL指针或者两个指针相等结束循环。如果两个指针相等则说明存在环。struct link { int data;原创 2006-11-27 19:57:00 · 1442 阅读 · 0 评论 -
关于list-(3) 约瑟夫
Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1链表实现:#include #include typedef struct Node{ int index; struct Node *next;}JosephuNode;int Josephu(int n, int m){ int i, j; JosephuNode *head, *tail; head原创 2006-11-27 17:21:00 · 830 阅读 · 2 评论 -
常见排序总结
常见排序总结 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的原创 2006-11-27 21:46:00 · 690 阅读 · 0 评论 -
时间复杂度的计算
算法复杂度是在《数据结构》这门课程的第一章里出现的,因为它稍微涉及到一些数学问题,所以很多同学感觉很难,加上这个概念也不是那么具体,更让许多同学复习起来无从下手,下面我们就这个问题给各位考生进行分析。首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 当我们评价一个算转载 2006-11-27 23:29:00 · 1478 阅读 · 0 评论