单链表怎么加结点,单循环链表有头节点吗

首页 > 经验 > 作者:YD1662022-11-04 00:36:18

链表是由节点组成的,节点中包含:数据域和指针域

头指针(★):头指针的类型是struct Node *类型,指向链表的第一个节点。

链表中存储节点的内存地址是随机,我们只能依靠头指针 head->next.....->next来一个一个找到节点和遍历节点。

示例:①创建一个没有头节点的链表,用头部插入的方式插入一个节点

②用户输入链表的数据,并可以打印出链表的数据

头指针head定义成全局变量,在程序中任何地方都能访问

typedef struct node{ int data; struct node *pNext; }Node; Node * head;//全局变量,存储在数据段

用函数创建一个节点:

Node * Create_Node(int value) { Node *temp = (Node*)malloc(sizeof(Node));//申请堆内存 if(NULL == temp){ printf("malloc error!\n");//检验堆内存是否分配成功 return NULL; } memset(temp,'\0',sizeof(Node));//堆内存初始化 temp->data = value; temp->pNext = NULL; return temp; }

用头部插入的方式插入一个节点

1.链表为空时

Node* temp = Create_Node(int value); temp->data = value; temp->next = NULL; head = temp;

2.链表不为空

temp->data = value; temp ->next = head; head = temp;

单链表怎么加结点,单循环链表有头节点吗(1)

由于最开始全局变量head=NULL,第二种情况可以包含第一种状况。

插入节点的函数

void Insert_Beginning(int value) { Node* temp = Create_Node(value); temp->data = value; temp->pNext = head; head =temp; }

打印出列表中的数据

void PrintList() { Node *temp = head; printf("-----链表数据-----\n"); while(NULL != temp) { printf("%d ",temp->data); temp = temp->pNext; } printf("\n"); }

main函数

int main() { int n,x,i; printf("请输入链表共有多少条数据: \n"); scanf("%d",&n); for(i = 0 ;i<n;i ) { printf("请输入节点的数据: \n"); scanf("%d",&x); Insert_Beginning(x); PrintList(); } return 0; }

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.