首页 > 代码库 > 链表《3》在链表中插入新的结点
链表《3》在链表中插入新的结点
下图是一个创建好的链表
下面我们需要在链表中插入一个结点,例如我们需要在第3个结点后插入一个结点
首先定义一个指针p,并且将p移动到第3个结点处
创建一个新结点pNew并且初始化pNew
pNew->data = http://www.mamicode.com/20
然后定义一个指针q将q指向p第4个结点
最后将p指向pNew,pNew指向q即可实现在链表中第3个结点后插入一个新结点
即:
p->pNext = pNew;
pNew->pNext = q;
插入后的效果:
程序代码:
#include <stdio.h> #include <stdlib.h> typedef struct Node//结点结构 { int data;//数据域 struct Node *pNext;//指针域 }NODE, *PNODE; //创建链表 PNODE Create_list(void); //遍历链表 void Traverse_list(PNODE pHead); //在链表中插入一个结点 void Insert_list(PNODE pHead, int pos, int val); void main() { PNODE pHead = NULL; pHead = Create_list();//创建一个非循环单链表 Traverse_list(pHead);//遍历链表 Insert_list(pHead, 4, 20); Traverse_list(pHead);//遍历输出链表中的数据 system("pause"); } //创建链表 PNODE Create_list(void) { int len;//结点的个数 int val;//临时保存结点的值 //分配一个不存放有效数据的头结点 PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(NULL == pHead) { printf("内存分配失败,程序终止!"); exit(-1); } //定义一个永远指向尾结点的结点 PNODE pTail = pHead; pTail->pNext = NULL; printf("请输入您需要生成的链表的结点的个数:"); scanf("%d",&len); for(int i=0; i<len; i++) { printf("请输入第%d个结点的值:", i+1); scanf("%d",&val); //创建一个临时结点 PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew) { printf("内存分配失败,程序终止!"); exit(-1); } pNew->data = http://www.mamicode.com/val;>
执行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。