C语言-动态链表的创建遍历与插入

本文介绍了一个简单的链表创建及插入节点的C语言实现过程。通过示例代码展示了如何手动创建链表并插入特定节点,包括在指定ID前插入新节点的情况处理。此教程适合初学者了解链表的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define P printf


typedef struct num
{
int id;
struct num *next;
}num;


num* creat()
{
int id=0;
num *head=NULL;
num *pnow=NULL;
num *pnew=NULL;


head=(num *)malloc(sizeof(num));
head->id=-1;
pnow=head; 






P("请输入一个ID\n");
while(1)
{
scanf("%d",&id);
if(id==-1){break;}


pnew=(num *)malloc(sizeof(num)); //开辟一段新的内存空间
pnow->next=pnew;                //将现在的next指向 新开辟的空间


//设置新内存的ID  与默认next空指向
pnew->id=id;
pnew->next=NULL;


pnow=pnew;//新开辟的内存空间 指向现在


}


    P("head=%p\n",head);
return head;
}


int pnum(num *head)
{
num *p=head->next;
P("head=%p p=%p\n",head,p);
if(head==NULL){return -1;}
while(p!=NULL)
{
P("%p:%d->\n ",p,p->id);
p=p->next;
}
return 0;
}


int insert(num *head)
{
num *p_now=head->next;
num *p_last=head;
num *p_insert=NULL;
if(head==NULL){return -1;}
while(p_now!=NULL)
{
if(p_now->id==5)
{//找到ID=5的链表就 退出循环() 此时的p_now为ID==5的指针
           
p_insert=(num *)malloc(sizeof(num));
p_last->next=p_insert;


p_insert->id=4;
p_insert->next=p_now;
break;
}


   p_last=p_now;       //保存以前的指针-last
p_now=p_now->next;  //改变指针指向下一条

}
   
   //p_now指向最后一个NULL(代表未找到匹配ID 添加到最后一个链表) 
    if(p_now==NULL)
    {
p_now=(num *)malloc(sizeof(num));
p_last->next=p_now;
   p_now->id=4;
p_now->next=NULL;
   p_now=p_now->next;
}


   


return 0;
}
int main()
{
num *head=creat();
    pnum(head);
insert(head);
pnum(head);
P("按任意键继续\n");
getchar();
getchar();


return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值