数据结构 单链表的建立(c程序干活满满)

目录

 

1.创建结构体

2.创建节点

3.插入

4.遍历链表

5.结果显示

下一站 双链表


1.创建结构体

     我们单链表的节点分为两个部分  1.数据  2.指针如图

   

     我们要定义一个结构体节点

//定义结构体 
struct node
{
	int data;   //数据
	struct node*next; //指针
};

 

2.创建节点

      我们已经定义了 节点的结构体了 然后就要给节点里面存储 值

//创建节点
struct node*createnode(data)
 {
     struct node*newnode=(struct node*)malloc(sizeof(struct node));//开辟空间
     newnode->data=data;   //节点里面的数据等于 主函数传过来的数据
     newnode->next=NULL;   //指针为空
     return newnode;      //返回节点
 }
 

 

3.插入

    1. 头插法  把节点插入在头节点后边

//插入(头插法)
void hin(struct node*head,int data)
{
	struct node*pnode=head;  //定义一个结构体指针
	struct node*newnode=createnode(data);  //定义一个新节点 并用上面的方法给节点存储
	newnode->next=pnode->next;//新节点指向头节点的下一个节点
	pnode->next=newnode; //头节点指向新节点
 }

-------------------------------------------------------------------------------------------------------------------------------- 

   2. 尾插法  把所有节点插入在链表的最后  

单链表 尾插

//尾插法
void nin(struct node*head,int data)
{
	struct node*pnode=head;  //定义一个结构体指针
	struct node*newnode=createnode(data);//定义新节点
	while(pnode->next!=NULL) //不是最后的节点执行循环
	{
		pnode=pnode->next; //结构体指针向下走
	}
	pnode->next=newnode; //循环结束的时候 pnode是最后的节点 最后的节点指向新节点
  } 

------------------------------------------------------------------------------------------------------------------------------

   3.定义结构体数组插入

   和尾插法思路相同

 //插入(利用结构体数组)
void in(struct node*head,int i)
{
	struct node* a[i]; //定义结构体数组
	struct node*pnode=head;//定义结构体指针
	int n; //循环变量
	for(n=0;n<i;n++)
	{
		a[n]=(struct node*)malloc(sizeof(struct node)); //给每一个数组单元开辟空间
		printf("第%d个节点为:",n+1);
		scanf("%d",&a[n]->data); //赋值操作
		pnode->next=a[n]; //pnode指向当前结构体数组
		pnode=a[n]; //pnode移到当前数组
	}
	pnode->next=NULL;
}   
 

 

4.遍历链表

 
 //遍历
void print(struct node*head)
{
	struct node*pnode=head->next; //定义指针
	while(pnode->next!=NULL) //不是链表的最后一个就执行循环
	{
		printf("%d-->",pnode->data); //打印
		pnode=pnode->next; //向下走
	}
	printf("%d",pnode->data); //结束循环时pnode是最后一个节点 打印
 } 

    

5.结果显示

 

 

 

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiexiexiexieqing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值