VC 链表操作

#include <afxcmn.h>
#include <afxcoll.h>
#include <iostream.h>
#include <afx.h>

//编译时需要使用多线程的版本的运行库

CStringList strList;
void print()
{
//获得节点的数量
int nCount=strList.GetCount();
cout<<nCount<<"nodes"<<endl;
//遍历链表的一种方法
for(int i=0;i<nCount;i++)
{
   //根据序号(从头开始)获得节点的位置
   POSITION pos=strList.FindIndex(i);
   if(pos)
   {
    //根据位置取得节点的内容
    CString str=strList.GetAt(pos);
    cout<<(LPCSTR)str<<" ";
   
   }
}
cout<<endl;
}

int main()
{
//判断链表是否为空
if(!strList.IsEmpty())
{
   return 0;
}
for(int i=0;i<10;i++)
{
   CString str;
   str.Format(_T("%d"),i);
   if(i%2==0)
   {
    //在链表头部添加节点
    strList.AddHead(str);
   }
   else
   {
    strList.AddTail(str);
   }

}
//打印链表
print();

//获得链表头节点的位置
POSITION pos=strList.GetHeadPosition();
//设置指定节点位置的内容
strList.SetAt(pos,"A");
print();

//删除头尾节点
strList.RemoveHead();
strList.RemoveTail();
print();

//在指定位置之前插入节点
pos=strList.GetTailPosition();
strList.InsertBefore(pos,"B");

//在指定节点位置之后插入节点
pos=strList.GetHeadPosition();
strList.InsertAfter(pos,"A");
print();

//查找指定的节点,如果没有找到则返回空
pos=strList.Find("0");
//删除指定节点
if(pos)
{
   strList.RemoveAt(pos);
}
print();

CStringList strList2;
strList2.AddHead("#");
//在头部与其他链表合并
strList.AddHead(&strList2);

//在尾部与其他链表合并
strList.AddTail(&strList2);
print();
//清空所有节点
strList.RemoveAll();


return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值