c语言单链表链表如何插入多个节点

c语言单链表链表如何插入多个节点,第1张

如果已知一个节点指针pre和一个节点指针cur,要把cur插入到pre节点之后,很显然要保证链表不会断开而丢失后面的节点,要先把后面的节点指针(指向lat的指针)保存下来,即有cur->next = pre->next,然后把cur连接的一串链表连接到pre后面,即pre->next = cur

上面介绍了,在一个节点之后插入节点的情况。这是通常的情况。如果要向一个链表的头部插入节点,就只需要将新节点的下一个指针指向链表的头指针即可。

在这种情况下,有两点要注意:

1,链表是否为空链表

2,要插入的节点是不是空指针。

代码实现:

//向单链表中插入一个节点(插入在链开始处)

//输入参数:单链表的头指针和要插入的节点指针

//输出参数:无

//返回值:指向单链表的头指针

SingleList* Insert(SingleList *head,SingleList *node)

{

if(node == NULL)

{

return head

}

else if(head == NULL)

{

return node

}

node->next = head

head = node

return head

}

我自己编的,数据定义

typedef struct duLNode

{int datastruct duLNode *priorstruct duLNode *next}duLNode,*dulinklist

Status Intilsit_DuL(dulinklist &l)//初始化

{if(!(l=(dulinklist)malloc(sizeof(duLNode)))) return ERROR l->next=NULL l->prior=NULL l->data=0//利用头接点的数据域存放表的长度 return OK}

Status insert_DuL(dulinklist l,int i,int e)

//若表存在,在第i个元素之前位置插入e

{dulinklist p,qint j=1if(i<=0&&i>l->data+1) return ERRORif(!(q=(dulinklist)malloc(sizeof(duLNode)))) return OVERFLOWl->data++q->data=efor(p=lj<ij++)p=p->nextq->next=p->nextif(p->next!=NULL) q->next->prior=qp->next=qq->prior=preturn OK}

Status delete_DuL(dulinklist l,int i)//删除表中第i个元素,本函数不返回其值

{dulinklist p,qint j=1if(l->data==0) {puts("NO data") return ERROR }

if(i<=0||i>l->data)

return ERROR

for(p=lj<ij++)

p=p->next

q=p->next

p->next=q->next

if(p->next!=NULL)

p->next->prior=p

free(q)

l->data--

return OK

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11771547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存