C++中单链表的建立和操作


准备数据

准备在链表操作中需要用到的变量及数据结构

示例代码如下:

struct Data   //数据结点类型
{
 string key;  //关键字
 string name;
 int age;
};
struct CLType  //定义链表结构
{
 Data nodeData;
 Data *nextNode;
};

定义了链表数据元素的类型Data以及链表的数据结构CLType。结点的具体数据保存在一个结构Data中,而指针nextNode用来指向下一个结点。

我们可以认为,该链表是一个班级学生的记录,其中key表示学号,name为学生的名字,age为年龄。

追加结点

追加结点就是在链表末尾增加一个结点。表尾结点的地址部分原来保存的是空地址NULL,此时需要将其设置为新增结点的地址(即原表尾结点指向新增结点),然后将新增节点的地址部分设置为空地址NULL,即新增结点为表尾。

由于一般情况下,链表只有一个头指针head,要在末尾添加结点就需要从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。

追加结点的操作步骤如下:

(1)首先分配内存地址,保存新增结点。

(2)从头指针head开始逐个检查,直到找到最后一个结点(即表尾)。

(3)将表尾结点的地址设置为新增结点的地址。

(4)将新增结点的地址部分设置为空地址NULL,即新增结点成为表尾。

示例代码如下:

CLType * CLAddEnd(CLType *head,Data nodeData)
{
 CLType *node,*htemp;
 if(!(node = new CLType))
 {
  cout<<"分配内存失败!"<<endl;  //分配内存失败
  return NULL;
 }
 else
 {
  node->nodeData = nodeData;   //保存结点数据
  node->nextNode = NULL;     //设置结点指针为空,即作为表尾
  if(head == NULL)      //当链表是空表的时候
  {
   head = node;
   return head;
  }
  htemp = head;
  while(htemp->nextNode != NULL)   //查找链表的末尾
  {
   htemp = htemp->nextNode; 
  }
  htemp->nextNode = node;
  return head;
 }
 
}

输入参数head为链表头指针,输入参数nodeData为结点保存的数据。程序中,使用new关键字申请动态空间,如果内分配成功,node中将保存指向该内存区域的指针。

然后,将传入的nodeData保存到申请的内存区域,并设置该结点指向下一结点的指针值为NULL。

C++中的函数多态性应用&虚函数的灵活应用

C++ 虚函数与纯虚函数

C++中虚函数工作原理和(虚)继承类的内存占用大小计算

C++继承:同名隐藏、覆盖,虚函数

C++中的函数多态性应用&虚函数的灵活应用

C++中基类的构造函数调用虚函数的问题及ATL_NO_VTBL宏

 

继续阅读本文的精彩内容请看第2页

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容