提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
链表是算法中基础的数据结构,但实际我们从课本学到的或者算法题中遇到的都是对链表中的一部分进行编程,因此,在完整的创建一个链表时,总是会遇到问题。下面我将自己对单链表的创建的一些思路做以分享,希望自己能加深对链表创建的巩固,也希望能帮助到大家。
一、链表是什么?
首先,链表和顺序表一样都属于线性结构,它是通过指针串联起来的。链表由多个独立的节点组成,每个结点包括数据域和指针域两个部分,每个节点的指针域存放的是下一个节点的地址。链接的入口点成为头节点,也就是Head。最后一个节点的指针域指向NULL;
链表主要分为三种类型:
单链表
双链表
循环链表
二、链表的创建
1.创建链表的步骤
1.构建节点
struct node{
int data;
node* next;};(注意分号不能遗漏)
当创建号节点后,如果觉得struct node名字过长,我们可以使用typedef对其进行修改,具体如下:
typedef struct node{
int data;
node* next;}newname;
2.生成头节点
3.生成普通节点(当需要创建多个普通节点时,可采用for循环)
4.输入数据
5.创建链表关系
2.链表创建的完整代码如下
#include< iostream >
using namespace std;
//构建节点
typedef struct node{
int data;
struct node* next;
}name;
//创建长度为n的链表
name* creatlist(int n)
{
//生成头节点
name* head=new name(0);
//生成普通节点
name* pre=new name;
for(int i(0);i<n;i++)
{
name* p=new name;
//输入数据
cout<<“请输入所需创建的数据”<<endl;
cin>>data;
//创建链表关系
pre->next=p;
pre=p;
p->next=NULL;
}
return head;
}
//链表的打印
void printflist(name* head,int n)
{
name* cur=head->next;
for(int i(0);i<n;i++)
{
cout<< cur->data <<endl;
cur=cur->next
}
}
//主函数的编写
int main()
{ int n;
cout<<”请输入n"<<endl;
cin>>n;
name* head=creatlist(n);
printflist(head,n);
system(“pause”);
return 0;
}
总结
对创建链表以及打印链表、主函数的调用进行书写,是一个完整的链表生成打印过程。
/