龙空技术网

C语言单链表基础知识-插入节点的简单方法

电子秘探 355

前言:

今天各位老铁们对“c语言链表添加”大概比较注意,同学们都想要知道一些“c语言链表添加”的相关内容。那么小编同时在网摘上网罗了一些对于“c语言链表添加””的相关资讯,希望你们能喜欢,我们快快来学习一下吧!

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

头指针(★):头指针的类型是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;

由于最开始全局变量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;}

标签: #c语言链表添加 #c语言链表怎么建立 #c语言描述单链表插入的算法 #设计一个算法求一个单链表中的节点个数 #链表创建新节点