📄 listexample.cpp
字号:
// ListExample.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "ListExample.h"
#include "afxtempl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 唯一的应用程序对象
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("致命错误:MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
CList<int, int> myList;
// 初始化链表数值
for(int i=3;i<=5;i++)
myList.AddHead( i );
// 输出当前链表头和链表尾的数值
_tprintf( "链表的头元素数值为:%d\n", myList.GetHead() );
_tprintf( "链表的尾原是数值为:%d\n\n", myList.GetTail() );
// 在链表尾添加数据
for(i=2;i>0;i--)
myList.AddTail( i );
// 输出当前链表头和链表尾的数值
_tprintf( "链表的头元素数值为:%d\n", myList.GetHead() );
_tprintf( "链表的尾原是数值为:%d\n\n", myList.GetTail() );
_tprintf( "删除当前链表的首元素。");
// 删除当前链表的首元素。
myList.RemoveHead();
_tprintf( "当前链表的头元素数值为:%d\n", myList.GetHead() );
_tprintf( "删除当前链表的末元素。");
// 删除当前链表的末元素。
myList.RemoveTail();
_tprintf( "当前链表的尾元素数值为:%d\n\n", myList.GetTail() );
// 按从链表头到链表尾的顺序输出链表中所有元素数值
_tprintf( "当前链表从头向尾数:\n");
POSITION pos = myList.GetHeadPosition();
for(i=1;i<=myList.GetCount();i++)
_tprintf( "第 %d 个元素的数值为:%d\n", i, myList.GetNext(pos) );
// 按从链表尾到链表头的顺序输出链表中所有元素数值
_tprintf( "\n当前链表从尾向头数:\n");
pos = myList.GetTailPosition();
for(i=1;i<=myList.GetSize();i++)
_tprintf( "第 %d 个元素的数值为:%d\n", i, myList.GetPrev(pos) );
_tprintf("\n");
// 在链头添加元素
pos = myList.AddHead(6);
// 在链头的下方插入新元素
myList.InsertAfter( pos, 5 );
_tprintf("当前位置的数值为:%d\n", myList.GetAt(pos));
// 在链头添加元素
pos = myList.AddHead( 8 );
// 获得链表中第二个元素的指针 pos
myList.GetNext( pos );
// 在改元素前插入新元素,数值为空
myList.InsertBefore( pos, NULL );
// 获得改元素的指针
myList.GetPrev( pos );
// 设置改元素的数值
myList.SetAt( pos, 7 );
// 找寻数值为 8 的元素的指针
pos = myList.Find( 8 );
// 删除该元素
myList.RemoveAt( pos );
// 获得链表中索引号为 0 的元素的指针
pos = myList.FindIndex( 0 );
// 删除该元素
myList.RemoveAt( pos );
// 获得链头指针
pos = myList.GetHeadPosition();
// 输出链表所有元素数值
for(i=1;i<=myList.GetSize();i++)
_tprintf( "当前链表第 %d 个元素的数值为:%d\n", i, myList.GetNext(pos) );
// 如果链表非空则删除链表所有元素
if( ! myList.IsEmpty() )
myList.RemoveAll();
}
// 调用该函数使程序不至于运行完立即退出,以便查看输出结果
getchar();
return nRetCode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -