资源简介
文本编辑器 源代码 MFC VC 课程设计 数据结构与算法
代码片段和文件信息
// Data.cpp: implementation of the CData class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “TextEditor.h“
#include “Data.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//对数据进行初始化,建立头结点,初始化链表
CData::CData()
{
m_Head = new Node;
m_Head->prior = m_Head->next = NULL;
m_Head->number = 0;
m_Head->pos = 0;
m_CurrentLine = m_Head;
InsertLine();
m_srSearchRecord.line = m_srSearchRecord.pos = 0;
}
//删除链表,释放内存
CData::~CData()
{
pNode p r;
p = m_Head;
while (p != NULL)
{
r = p;
p = p->next;
delete r;
}
}
//从指定起始位置开始查找指定字符串,返回查找到的行的指针,将查找到的地址保存到函数参数position中
pNode CData::Search(int startline int startchar char *value int &position)
{
pNode p;
//从指定行开始查找
p = GetLine(startline);
//对指定行的结点数据进行查找,若找到返回,否则进行下一步
if (p != NULL)
{
if ((position = BF(p->data+startchar value)) != -1)
{
if (m_srSearchRecord.line > m_Head->number && position > m_srSearchRecord.pos)
return NULL;
position += startchar;
return p;
}
else
{
p = p->next;
m_srSearchRecord.line++;
}
}
//遍历链表查找,若找到返回,否则进行下一步
while (p != NULL && m_srSearchRecord.line <= m_Head->number)
{
if ((position = BF(p->data value)) != -1)
return p;
else
{
p = p->next;
m_srSearchRecord.line++;
}
}
//通过查找记录的行数来判断是否已遍历完一遍链表,若未遍历完则将指针p指向头结点
if (m_srSearchRecord.line <= m_Head->number)
{
p = m_Head->next;
m_srSearchRecord.line++;
}
//继续遍历链表进行查找,若查找到数据则返回指针,否则直到查找记录的行数达到总行数为止,然后进行下一步
while (m_srSearchRecord.line <= m_Head->number)
{
if ((position = BF(p->data value)) != -1)
return p;
else
{
p = p->next;
m_srSearchRecord.line++;
}
}
//对最后一行的结束位置之前进行查找,若查找到返回指针,否则返回NULL
if (m_srSearchRecord.line > m_Head->number)
{
if ((position = BF(p->data value)) != -1 && position <= m_srSearchRecord.pos)
return p;
}
return NULL;
}
//插入新行,返回新行指针
pNode CData::InsertLine()
{
pNode p;
if (m_CurrentLine == NULL)
return NULL;
//建立新节点,插入到链表中
pNode line = new Node;
line->next = m_CurrentLine->next;
line->prior = m_CurrentLine;
m_CurrentLine->next = line;
if (line->next != NULL)
line->next->prior = line;
//对结点数据初始化
line->data[0] = ‘\n‘;
line->data[1] = ‘\0‘;
line->number = 0;
line->pos = m_CurrentLine->pos + 1;
//更新由于插入新行而导致的其他数据变化
m_Head->number++;
p = line->next;
while (p != NULL)
{
p->pos++;
p = p->next;
}
m_CurrentLine = line;
return m_CurrentLine;
}
//删除当前行,返回前一行的指针
pNode CData::DeleteLine()
{
if (m_CurrentLine == NULL)
return NULL;
if (m_CurrentLine->pos == 1)
return m_CurrentLine;
pNode r;
//保存前一行指针
pNode p = m_CurrentLine->prior;
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-12-06 15:00 文本编辑器 MFC VC 数据结构 课程设计\
目录 0 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\
文件 8774 2011-03-20 20:08 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Data.cpp
文件 1873 2011-03-20 20:08 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Data.h
目录 0 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\
文件 16833 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\Data.obj
文件 6046 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\Data.sbr
文件 19446 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\MainFrm.obj
文件 3610 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\MainFrm.sbr
文件 106181 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\StdAfx.obj
文件 1375136 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\StdAfx.sbr
文件 147582 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.exe
文件 369416 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.ilk
文件 23737 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.obj
文件 6879584 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.pch
文件 377856 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.pdb
文件 6708 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.res
文件 8509 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditor.sbr
文件 15518 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditorDoc.obj
文件 3380 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditorDoc.sbr
文件 79680 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditorView.obj
文件 21504 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\TextEditorView.sbr
文件 214016 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\vc60.idb
文件 364544 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\Debug\vc60.pdb
文件 2131 2011-03-14 07:08 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\MainFrm.cpp
文件 1553 2011-03-13 23:40 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\MainFrm.h
文件 4088 2011-03-03 15:30 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\ReadMe.txt
文件 212 2011-03-03 15:30 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\StdAfx.cpp
文件 1054 2011-03-03 15:30 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\StdAfx.h
文件 43752 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\TextEditor.aps
文件 2000 2011-12-06 15:01 文本编辑器 MFC VC 数据结构 课程设计\TextEditor\TextEditor.clw
............此处省略19个文件信息
相关资源
- mfc简单四则运算计算器
- Duilib在MFC、WTL中的使用方法(Demo)
- VC++科学计算器源代码
- [转载]MFC对话框控件和背景图片自适应
- MFC投影程序
- MFC多张位图连续动画显示程序练习
- 浙江大学OOP大程 C++ 五子棋设计 MFC
- MFC图书馆管理系统
- 简单的基于MFC的ATM系统含源代码
- mfc与duilib之间控件相互调用
- MFC画图直线,折线。。
- MFC实现多任务多线程软件
- MFC各种遍历
- 孙鑫VC++深入详解教程(全20讲)PPT讲
- 学生社团管理系统 c++ MFC 课程设计
- 基于MFC的TeeChart控件
- FTP客户端VC实现
- MFC 图数据结构 最短路径
- 16C++MFC课程设计之吹泡泡游戏
- MFC 编写的迷宫游戏
- MFC表达式计算器
- 一个简单的MFC画圆的
- C++实现指针式时钟Sample
- 航空客运订票系统数据结构课程设计
- 数值分析(Numerical Recipes)3rd Edition原
- LPC1768IAP+MFC上位机+bootloader+app
- PN532-libnfc-mfoc-mfcuk-windows
- 五子棋C++源代码实现禁手
- MFC学生选课系统单文档
- 宾馆酒店管理系统 源代码vc加SQL编写
评论
共有 条评论