#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Node{
int num;
Node *next;
}Node;//定义节点
/*
init(头结点,初始化节点个数)
使用尾插法初始化链表
*/
void init(Node *head,int number){//初始化链表长度
Node *head2=head;
for(int i=0;i<number;i++){//尾插法
Node *node=(Node *)malloc(sizeof(Node));//创建一个节点,因为是malloc函数分配,分配的空间并不会因为函数运行结束而结束
node->num=i;//给节点赋值
head2->next=node;//将新节点的地址会给上一个节点的next,形成链表
head2=node;//移动到新节点,也就是最后一个节点,然后继续循环
}
head2->next=NULL;//最后一个节点,next的值要为NULL
}
void init2(Node *head,int number){//初始化链表长度
Node *head2;
for(int i=0;i<number;i++){//头插法
Node *node=(Node *)malloc(sizeof(Node));//创建一个节点,因为是malloc函数分配,分配的空间并不会因为函数运行结束而结束
node->num=i;//给节点赋值
if(i==0)node->next=NULL;//第一个节点,显然next应该是NULL
else node->next=head2;
head2=node;
}
head->next=head2;
}
void print(Node *head){
head=head->next;//头结点没有数值,所以先移动到下一个节点
while(head!=NULL){
cout<<head->num<<" ";
head=head->next;//移动到下一个节点
}
cout<<endl;
}
void print2(Node *head){
head=head->next;//头结点没有数值,所以先移动到下一个节点
while(head!=NULL){
cout<<head->num<<" ";
head=head->next;//移动到下一个节点
}
cout<<endl;
}
int main(int argc, char const *argv[])
{
Node *head=(Node *)malloc(sizeof(Node));
init(head,5);
print(head);
// init2(head,5);
// print2(head);
return 0;
}
数据结构 如何初始化单链表
最新推荐文章于 2024-03-12 20:44:15 发布