数据结构
文章平均质量分 73
邹亚鹏
- -!!
展开
-
DoublelistDemo(头 尾 中插入,头 尾删除,释放)
Makefile:BIN = DoubleListDemoCC = gccSRC = DoubleList.c main.c OBJS = DoubleList.o main.oCFLAGS = -Wall -O2$(BIN): $(OBJS) $(CC) -o $(BIN) $(OBJS) $(CFLAGS)$(OBJS): $(SRC) gcc -c原创 2013-11-22 09:31:39 · 1567 阅读 · 0 评论 -
关于链表的认识
对于一些基本的概念,我就不多说了~~~在我的感觉里链表就是一个个方块和箭头的组成。那么,方块是什么??箭头又是什么??先说方块吧,它是链表的最基本的组成单元,当然,这个方块还可以再分,最简单的就是单链表,只要将其分成2部分就可以了,一部分是我们要存储的数据,另一块就是一个指针。那么,这些指针是干什么的?这就要开始说箭头了,我们知道,数组是一个线性表,它的数据存储是在连续的物理空间上的,原创 2012-07-11 22:50:27 · 534 阅读 · 0 评论 -
白话经典算法:冒泡,直接插入,希尔
原帖开始链接:http://blog.csdn.net/morewindows/article/details/6657829冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1转载 2012-12-24 16:03:53 · 635 阅读 · 0 评论 -
索引表
在我们传统的印象中,索引和表是两个不同的东西。我们总是先创建表,然后根据查询,建立相应的索引。表和索引在物理上属于不同的存储空间。 例如你建立了一个好友的通讯录,你经常需要通过指定好友的姓名来查询他的有关信息,为了提高查询的性能(假设你的好友多如牛毛),你可能希望在他们的姓名上建立一个索引,这是一种非常自然的想法。 可是,也许有一天你发现,除了上述的这种查询之外转载 2012-12-03 00:48:26 · 518 阅读 · 0 评论 -
C++新手题 练手题
题目:1.输入格式输入一个偶数n(0BBS_ID IP_AddressBBS_ID只包含小写字母,长度不超过12,IP_Address是该ID的IP地址,格式为“A.B.C.D”,其中A,B,C,D是0-255范围内的整数。每一个IP地址正好对应两个BBS_ID,首次出现的ID为主ID,后面出现的为马甲。当程序输入n为0时表示结束。2.输出格式对于每一个测试转载 2013-03-04 11:15:03 · 981 阅读 · 0 评论 -
多线程--条件变量
条件变量函数操作相关函数说明初始化条件变量pthread_cond_init 语法基于条件变量阻塞pthread_cond_wait 语法解除阻塞特定线程pthread_cond_signal 语法在指定的时间之前阻塞pthre转载 2013-11-22 15:18:55 · 746 阅读 · 0 评论 -
C和C++笔试面试题汇总
第一部分:基本概念及其它问答题1、关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3). 在模块内,一个转载 2012-10-15 23:28:35 · 1149 阅读 · 0 评论 -
(经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值转载 2012-10-15 23:26:31 · 983 阅读 · 0 评论 -
排序算法空间、时间复杂度
排序算法空间、时间复杂度简单排序法——冒泡法是第二维循环中自己循环,找最小或最大值选择排序和交换排序是第二维循环与第一维循环中的值比较;交换法最清晰,选择法作了改进,只交换位置标号,算法复杂度没变。插入法,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张(较为复杂)高级排序法——快速排序,从冒泡法改进得到,基本思想是任选一转载 2012-07-21 18:13:20 · 779 阅读 · 0 评论 -
各种内部排序算法复杂度的比较和排序方法的选择
按平均时间将排序分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;(3)O(n1+£)阶排序 £是介于0和1之间的常数,即0(4)线性阶(O(n))排序 如桶、箱和基数排序。转载 2012-07-21 18:13:53 · 760 阅读 · 0 评论 -
线程处理函数pthread_cleanup_push / pthread_cleanup_pop
线程可以安排它退出时需要调用的函数,这样的函数称为线程清理处理程序,线程可以建立多个清理处理程序。处理程序记录在栈中,也就是说它们的执行顺序与它们注册时的顺序相反。 pthread_cleanup_push来注册清理函数rtn,这个函数有一个参数arg。在以下三种情形之一发生时,注册的清理函数被执行: 1)调用pthread_exit。 2)作为对取消线程请求(pth原创 2014-01-08 19:07:40 · 610 阅读 · 0 评论 -
C语言实现一个简单的计算器
#include#include#define N 100char stack1[N]; char stack2[N]; int top = -1;char pop(char *stack){ char tmp; if(top == -1) {原创 2012-07-14 22:36:35 · 1541 阅读 · 0 评论 -
一个简单的电话客服模拟器
#include #include #define N 200#define M 50typedef struct user{ int intime; int outtime; int endtime;}USER;typedef struct server{ int flt; int servetime;}SER原创 2012-07-15 22:46:00 · 2479 阅读 · 0 评论 -
一句话实现查找某个结点是否在二叉树里
假设给定一个和二叉树中数据元素有相同类型的值,在已知二叉树中进行查找,若存在和给定值相同的数据元素,则返回函数值为 1,并用引用参数返回指向该结点的指针;否则返回函数值为 0。int isfind(TREENODE *root,Data data){ return ((root != NULL) && ((root->data == data) || (isfind(root->原创 2012-07-16 21:27:18 · 3272 阅读 · 1 评论 -
一个简单的个人通讯录(基于二叉排序树)(加注释版~~~~)
TreeNode.h:/*********************************************************************************** 基于二叉排序树的个人通信录****** 文 件: Treenode.h* 作 者: 邹亚鹏* 部 门: 南京工程学原创 2012-07-19 12:54:52 · 2744 阅读 · 0 评论 -
停车场管理系统(有注释,改了几个bug的版本)
Parking.h:/*********************************************************************************** 用栈和队列实现简单的停车场管理系统***** 文 件: Parking.h* 作 者: 邹亚鹏* 部 门: 南京工程大学* 编原创 2012-07-19 11:07:56 · 2478 阅读 · 1 评论 -
用链表实现直接选择排序和直接插入排序
mysort()为直接插入排序,mysort2()为直接选择排序;对于直接选择排序,我一开始是直接交换的结点里的数据,这个虽然是程序简单化了,但这和一个数组还有区别吗?所以我又改了交换结点,当然这就要烦的多了,一个有4种不同的情况~~~~~#include #include typedef struct node { int data; struct node *n原创 2012-07-18 23:15:14 · 6087 阅读 · 1 评论 -
用栈和队列实现简单的停车场管理系统
Parking.h:#include #include #include #include #define N 1typedef struct car{ char * timer;}CAR;typedef struct que{ int flt; struct que *next;}QUE;void pushp();char *popp(原创 2012-07-18 22:09:38 · 5623 阅读 · 1 评论 -
二茶树实现通讯录管理系统
#define N 50typedef struct student{ char name[N]; char studentID[N]; char brithday[N]; char tele[N];}TreeData;typedef struct treenode{ TreeData * stuinfo; struc原创 2012-07-18 09:12:59 · 930 阅读 · 0 评论 -
关于scanf("%c",&ch)直接跳过的问题
过去上论坛,还有最近写程序,老是有人遇到这样的问题:就是有时候scanf("%c",&ch)本应该阻塞等待用户输入一个char型数据的,但为什么会跳过呢?纠其根源,我们先来了解一下scanf()是怎么接受数据的。首先,当我们的pc指向scanf这句时,系统并不是等待用户输入,而是判断输入缓冲区有没有符合格式的内容,如果有,则直接读取。知道了这个,我就应该明白,scanf("%c",&c原创 2012-07-18 09:45:19 · 6143 阅读 · 6 评论 -
一个基于linux的聊天软件(并发服务器,sqlite3数据库,有注释)
SC.h:#include #include #include #include #include #include #include #include #include #include #include #include #define ADMIN_SHOW 1#define ADMIN_BAN 2#define ADMIN_LIFT 3#define AD原创 2012-07-31 11:10:30 · 3003 阅读 · 1 评论 -
写给初学数据结构的同学之(线性表(顺序表,链表))
昨天的贴了一些双链表的基本操作(实现代码),对于一些上过课,知道了一些基本概念的同学,我相信还是有一点小小的帮助的。但是,这样的话,对于那些基本概念读不了解的童鞋,我觉得我的那些实现代码就会有点肯跌了~~~所以,这次,我会从基本概念开始说,但是我还是会以代码为主,因为我觉得,基本概念知道的再多,也不急会几行代码~~~~~~~~~~~~~~~进入正题:线性表:好吧,肯跌了,我还真的说原创 2012-07-20 16:11:27 · 941 阅读 · 0 评论 -
写给初学数据结构的同学之(循环双链表基本操作,创建,插入,删除,排序)
1.双向循环链表的创建:没什么好说的NODE * Doublelinklist(){ NODE *head = NULL; return head;}2.插入节点:NODE *myinsert(NODE *head,NodeData Data){ NODE *last = head; if(head == NULL) {原创 2012-07-19 22:51:02 · 4140 阅读 · 0 评论 -
一个简单的学生信息管理系统(循环双向链表)
StudentManage.h:#include #include #include //#include #define N 100//#define CHIN typedef struct student{ int studentID; char name[N]; int age; int sex;}STUDENT;typedef s原创 2012-07-19 15:22:31 · 5096 阅读 · 0 评论 -
一个Linux下C线程池的实现(转)
1.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程转载 2014-09-18 10:13:08 · 898 阅读 · 0 评论