开发工具与关键技术: 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为结束。