c++中单链表的使用


线性表可分为顺序存储结构和链式存储结构

顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和大小的数组并赋值的过程。而单链表和顺序存储结构就不一样,它的每个数据的存储位置不需要像数组那样集中,它可以很散,是一种动态结构。对于每个链表来说,它所占用的空间大小和位置并不需要预先分配划定,可以根据系统的情况和实际的需求即时生成。所以,创建单链表的过程就是一个动态生成链表的过程。即从“空表”的初始状态起,一次建立各元素结点,并逐个插入链表。

单链表的整表创建

单链表的整表创建主要有两种方法,即头插法和尾插法,下面分别对这两种方法进行介绍

链表类

首先在类中声明数据成员

 1 memberCar *next 

1.头插法

memberCar *head=NULL;  //此处为类外,函数上面,通常建立一个空的表头,表头不存数据,便于释放
void
create(memberCar *&head) //头插法,创建节点 { memberCar *p, *s = head;//head为头节点,s为p前面的一个节点,p为要插入的节点

p = new memberCar(); p->next = NULL;
/*
if (head == NULL) //不建议这种写法(不利于释放),头节点为空的情况 { head = p; //p就是头节点,此时s也为头节点 s = p; return; }*/ //插入 p->next = s->next; s->next = p; }
 

 

2.尾插法

//定义为全局变量,创建链表表头和尾节点

memberCar *head=NULL;
memberCar *pend = NULL;

void create() //尾插法,创建节点
{


memberCar *p ;

p = new memberCar();

p->next = NULL;

//判断,如果头节点为空,由于没有数据成员next,则不能指向下一节点

if (head==NULL)
{
head= p;
pend = p;
}
else
{
pend->next = p;//原来的尾指针指向新建的p
pend = p;//然后尾指针的位置再等于新建指针的位置
}

}

 

然后就是对链表执行操作(如果是对特点的节点操作,那么就可以用if条件语句遍历)

//此处为遍历链表,注意对链表的操作,包括调用函数,修改数据成员都需要遍历
void show(memberCar *head)  //传入链表头指针
{
    memberCar *showname = head;  
    while (showname)
    {
        showname->print();  //链表调用
        showname = showname->next;
    }
}

最后就是删除链表,思路:遍历,先定义一个指针,指向头节点。然后判断头节点的下一节点是否为空,不为空则让指针指向头节点的下一节点,然后删了头节点,然后头节点再等于指针所在的节点。循环,以此类推,直到全部删掉。最后定义的指针为NULL。大功告成。

1         memberCar *tou;
2     tou = head;
3     while(tou->next != NULL)
4     {
5         tou = tou->next;
6         delete head;
7         head = tou;
8     }
9     delete tou;    

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM