链表结构

开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-6-4

链表结构:
程序对数据的表示,不但要求存放基本信息,还要表示与其它数据元素的关系
线性表是最简单的数据组织形式。

单向链表结构:
如图所示

在这里插入图片描述

上图所示,这是一个单向链表结构,首先头指针head指向了第一个节点,
第一个又指向了第二个节点,节点里面装的是各自的数据,最后一个节点
指向了空,是因为这是个单向链表。

链表:
(1)建立链表
(2)遍历链表

建立链表:
头文件部分:
这是第一步,首先在头文件建立一个结构体。
头文件代码部分;

struct node //定义结构体
{
int data;//成员变量
node*next; //定义一个指针
};
node * BuildLinked ();//定义了一个方法用来新建链表

以上是头文件定义代码,为创建链表所定义的结构体,定义了int类型的变量来
存放节点数据,定义next指针则是用来作为节点指标。

自定义部分:
新建一个链表,以输入0为结束。
自定义文件代码部分
node * BuildLinked()
{
node*head;
node *p=NULL, *q;
q = new node;
cin >> q -> data; //把输入的数据存放到变量Data
head = NULL;
while (q->data!=0)
{
if (head==NULL) //判断是否第一次新建节点
{
head = q;
}
else
{
p->next = q;
}
p = q;
q = new node;
cin >> q->data;
}
p->next = NULL;
delete q; //释放多余的节点
return head;
}

以上就是代码实现部分,首先定义了三个指针作为头指针还有新增节点和指向下一
个节点使用
(1)为指针p申请了内存,并且把cin输入的数据存放到变量Data里面。
(2)初始化head头指针。
(3)一个while循环,来循环的输入链表,循环条件是输入的数据不为0。
(4)一个if语句来判断是否是第一次新建节点,是的话就把head头指针指向
这个新节点。
(5)否则就把p指向下一个的节点为新增的节点q。
(6)并把新增的节点q的呢过于p,也就是把指针p指向了下一个节点。
(7)重新再为q申请了内存,并把输入的数据存放到Data里面作为节点的数据。

遍历链表:
新建了链表后,进行输出。
首先定义头文件里面的方法:

void ErgodicLinked(node*);
定义一个方法,并且带了一个指针参数。

自定义文件:
方法自定义,定义了ErgodicLinked的方法,带了一个指针参数,作为遍历链表。
void ErgodicLinked (node* head)
{
while (head != NULL) //判断头指针时候指向的是空
{
cout << head->data << ends; //输出指针内的元素
head = head->next; //继续指向下一个指针
}
}

(1) 一个while循环,循环条件为头指针指向的地方不为空,也就是指向的
节点还有节点,不为空证明不是最后元素。
(2) 输出头指针所指向的节点的元素。
(3) 把头指针继续指向下一个指针。
(4) 继续循环,知道把所有的节点东输出为止。

Main主函数:
void main()
{
node*head = BuildLinked ();//创建链表
ErgodicLinked (head); //遍历链表
}
主函数这边调用两个方法
遍历链表带head头节点作为参数。

在这里插入图片描述
输入数据新增节点,一输入0为结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值