Chinaunix首页 | 论坛 | 博客
  • 博客访问: 614897
  • 博文数量: 120
  • 博客积分: 2284
  • 博客等级: 大尉
  • 技术积分: 1330
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-25 10:49
个人简介

http://guliqun1983.blog.163.com/blog/static/501116852011730535314/

文章分类
文章存档

2013年(23)

2012年(23)

2011年(74)

分类: C/C++

2011-06-14 12:39:47

 


[post] 一. 华为一道面试题-1-n排序

有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
网上转的,一开始也没有注意到最开始的半句。

算法:N个不等的自然数1~N,排序完成后必然为1~N。所以可以一次遍历,遇到a!=i的就把a和a[a]交换。

void sort(int a[], int n)
{
int i;
int t; /*临时变量:空间复杂度O(1)*/

for (i=1; i{
while(a!=i)
{
t = a[a];
a[a] = a;//排好一个元素
a = t;
}
}
}

二. 一次遍历 找 链表倒数第n个节点

一道面试题目,阿明和晨晨看到并且告诉我答案的。要求通过一次遍历找到链表中倒数第n个节点,链表可能相当大,可使用辅助空间,但是辅助空间的数目必须固定,不能和n有关。
算法思想:两根指针,第一根先出发,相距n步后第二根出发。然后同时步进,直到第一根指针达到末尾。

struct iNode {
int value;
iNode * next;
};
iNode * getresult(iNode * head,int n)
{

iNode *pfirst;
iNode *psecond;

pfirst=head;
int counter;

for(counter=0;counterpfirst=pfirst->next;
}

psecond=head;

while(pfirst!=NULL) {
pfirst=pfirst->next;
psecond=psecond->next;
}

return psecond;

}

三. VC++学习笔记

1.     日期转成字符串:

  COleDateTime   ww;
ww=COleDateTime::GetCurrentTime();
AfxMessageBox(ww.Format("%Y-%m-%d %H:%M:%S"));

2.     字符串转成日期:

COleDateTime dt;

    dt.ParseDateTime(“2006-08-08 08:08:08”);

3.     资源文件

资源文件名:xxx.rc,其中要包含的主要文件:resource.h和afxres.h

4.     vc开发环境没有自动提示时:

  删除 目录下的ncb文件 ,再打开一般就ok了

5.     利用_variant_t 取数据库数据的方法:

  _variant_t ibb;

    ibb=(_variant_t)rs->GetCollect("inta");

    if(ibb.vt!=VT_NULL)

    {

        m_b=ibb.lVal;

    }

6.     平时取记录集字段值的方法:

  (LPCTSTR)(_bstr_t)rs->GetCollect("datea")

7.     DoModal()可以返回两个结果 IDOK,IDCANCEL,他们都是int型,分别是:1,2。通过EndDialog(IDOK)的方式返回。

8.     一般将数据库连接方面的信息放到app中。则AfxGetApp()非常重要,如;

  CAdo2App* mapp=(CAdo2App*)AfxGetApp();

  Map->conn->Execute(sql,NULL,adCmdText);

9.     DECLARE_DYNCREATE(类名),IMPLEMENT_DYNCREATE(类名,基类名) 使得由CObject继承来的类在程序运行的时候能够动态的创建。

10.   DECLARE_DYNAMIC(类名),IMPLEMENT_DYNAMIC(类名,基类名) 可以在运行时获得该类的信息

11.   DECLARE_SERIAL(类名),IMPLEMENT_SERIAL(类名,基类名,0)为一个可以串行化的CObject派生类产生必要的C++标题代码

12.   获得文档的方法: CMainFrame * pFrame=(CMainFrame *) AfxGetMainWnd();

CPClientDoc * pDoc =(CPClientDoc *) pFrame->GetActiveDocument();


13.   获得视图的方法:CMainFrame * pFrame=(CMainFrame *) AfxGetMainWnd();

myView =(CPClientView*) pFrame->GetActiveView();

14.   如果要引用全局变量或者全局方法,须在当前类中引入:extern 名字;[/post]
阅读(1561) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~