在单链表指定位置插入数据是单链表的常用操作之一。插入操作大致分为如下三种:
在已知P指针所指向的结点后插入一个元素x。
在p指针所指向的结点前插入一个元素x。
在线性表中值为y的元素插入一个值为x的数据元素。
大致算法思想:插入运算是将值为x的新结点插入到表的第i个结点的位置上,即插入到ai-1与ai之间。
大致步骤:
找到ai-1存储位置p
生成一个数据域为x的新结点*s
令结点*p的指针域指向新结点
新结点的指针域指向结点ai。
在已知P指针所指向的结点后插入一个元素x其代码实现为:
s=new NodeType;
s->data=x;
s->next=p->next;
p->next=s;
下面是动画演示:
完整的可执行代码如下:
#include "stdio.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *L