问题描述:
在无头单链表的一个非头节点前插入一个节点(不能遍历链表)
代码实现:
typedef int DataType;
typedef struct SListNode{
struct SListNode* _next;
DataType _data;
}SListNode,*pSListNode;
pSListNode BuySListNode(DataType x)//创建新节点
{
pSListNode node = (pSListNode)malloc(sizeof(SListNode));
assert(node);
node->_data = x;
node->_next = NULL;
return node;
}
void InsertSList1(pSListNode pos,DataType x)
{
assert(pos);
DataType data;
pSListNode tmp = BuySListNode(x);//插入新的节点
tmp->_next = pos->_next;
pos->_next = tmp;
data = pos->_data;//将节点中的值进行交换
pos->_data = tmp->_data;
tmp->_data = data;
}
void InsertSList2(pSListNode pos, DataType x)//在无头单链表的一个非头节点前插入一个节点(不能遍历链表)
{
assert(pos);
pSListNode tmp = BuySListNode(pos->_data);//插入新的节点
tmp->_next = pos->_next;
pos->_next = tmp;
pos->_data = x;
}