一个简单的链表程序

#include <stdio.h>
#include <malloc.h>


void creat_link(int num);
void Printf_Link(struct stu *Phead,int num);
struct stu 
{
int age;
struct stu *pstu;
};


struct stu *Phead = NULL;   //头指针
struct stu *Pacco;    //伴随指针
int main()
{
creat_link(5);
Printf_Link(Phead,5);
   return 0;
}




//创建一个链表
void creat_link(int num)
{
struct stu * p;   //保存动态内存分配的地址

int ag;     //保存输入的学生的年龄
int i;
    for(i=0; i<num; i++)
{
printf("请输入第%d个学生的年龄:\n",(i+1));
scanf("%d",&ag);
p = (struct stu*)malloc(sizeof(struct stu));    //动态分配一个内存
if(p == NULL)    //判断内存是否分配成功
{
printf("error!!!\n");
return;
}
if(i == 0)    //判断是否为链表第一个结点  第一个的地址给头指针和伴随指针   伴随指针可以找到最后一个结点
{
           Phead = p;
  Pacco = p;
}
else       //不是第一个结点要把地址给伴随指针和上个结点
{
Pacco->pstu = p;  //给上个结点
Pacco = p;        //给伴随指针
}
        Pacco->age = ag;      //把输入的年龄保存到结点     
}
}


//打印链表
void Printf_Link(struct stu *Phead,int num)
{
   int i;
   struct stu * p;   
   p = Phead;      //先把头指针拿过来(有头指针就可以找到整个链表),不能修改头指针,我们可以随便修改p
   for(i=0; i<num; i++)
   {
      printf("学生%d的年龄:%d\n",(i+1),p->age);
 p = p->pstu;     //让地址p再指向下一个结点
   }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值