思路:
由于单链表的单向性,所以我们现在这个非头结点的后面插入一个节点,然后在交换这两个节点就可以了。
头文件:链表定义
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
typedef int DataType;
typedef struct strNode
{
struct strNode* pNext;
DataType data;
}Node;
typedef struct strNode* PNode;
下面是具体实现代码
PNode Buy_Node(DataType data)//创建节点!!!
{
PNode tmp = (PNode)malloc(sizeof(Node));//开辟一个空间节点
if (tmp == NULL)
{
return NULL;
}
tmp->data = data;
tmp->pNext = NULL;
return tmp;
}
void InsertNotHeadNode(PNode pos, DataType data)
{
PNode PNewnode = NULL;
PNode _pos = pos; //记住原来节点的位置
assert(pos);
PNewnode = Buy_Node(data);
PNewnode->pNext = _pos->pNext;
_pos->pNext = PNewnode;
_pos->data = _pos->pNext->data;
_pos->pNext = _pos->pNext->pNext;
free(PNewnode);
}