C语言:【单链表】在无头单链表的一个非头节点前插入一个节点

来源:互联网 发布:java 生成jar包命令 编辑:程序博客网 时间:2024/05/16 11:43
#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int DataType;typedef struct SListNode{    DataType data;    struct SListNode* next;}SListNode;SListNode* BuyNode(DataType x){    SListNode* next = (SListNode*)malloc(sizeof(SListNode));    next->data = x;    next->next = NULL;    return next;}void PushBack(SListNode* & ppHead, DataType x){    if (ppHead == NULL)    {        ppHead = BuyNode(x);    }    else    {        SListNode* tail = ppHead;        while (tail->next != NULL)        {            tail = tail->next;        }        tail->next = BuyNode(x);    }}void PrintSNodeList(SListNode* ppHead){    while (ppHead)    {        printf("%d->", ppHead->data);        ppHead = ppHead->next;    }    printf("\n");}//在无头单链表的一个非头节点前插入一个节点void InsertFront(SListNode* & ppHead, SListNode* pos,DataType x){    assert(ppHead);    SListNode* ppHeadName = ppHead;    while (ppHeadName != pos)    {        ppHeadName = ppHeadName->next;    }    if (ppHeadName == NULL)    {        return;    }    SListNode* cur = BuyNode(x);    cur->next = pos->next;    pos->next = cur;    cur->data = x;    DataType tmp = cur->data;    cur->data = pos->data;    pos->data = tmp;}void Test3(){    SListNode* List = NULL;    PushBack(List, 1);    PushBack(List, 2);    PushBack(List, 3);    PushBack(List, 4);    PushBack(List, 5);    PrintSNodeList(List);    InsertFront(List, List->next->next, 10);    PrintSNodeList(List);}int main(){    Test3();    system("pause");    return 0;}


0 0