前言:
今天各位老铁们对“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语言描述单链表插入的算法 #设计一个算法求一个单链表中的节点个数 #链表创建新节点