目录
本次的单链表内容紧接着上一篇博客,实现在一个位置后面插入和删除以及查找的操作。
typedef int SLTDataType;
//利用typdef类型重定义来定义链表的数据类型以及结构体的简写。
//便于以后链表数据类型的更换以及结构体类型声明。
typedef struct SListNode{
SLTDataType data;
struct SListNode* next;
}SLTNode;
SLTNode* BuyNode(SLTDataType x)
{
SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));
if(newnode == NULL)
{
printf("malloc fail;\n");
exit(-1);
}
newnode -> data = x;
newnode -> next = NULL;
return newnode;
}
链表的插入:
void SLTNodeInsert(SLTNode* pos, SLTDataType x)
{
//首先创建一个新的结点
SLTNode* newnode = BuyNode(x);
//在给的位置后一个位置进行插入操作
newnode -> next = pos -> next;
pos -> next = newnode;
}
链表的删除:
void SLTNodeErase(SLTNode* pos)
{
//删除给入位置的后一个元素
SLTNode* p = pos -> next;
pos -> next = p -> next;
free(p);
}
链表元素的查找:
SLTNode* SLTNodeFind(SLTNode* phead, SLTDataType x)
{
while(phead)
{
if(phead -> val == x)
return phead;
phead = phead -> next;
}
return NULL;
}