【学习笔记】【链表】链表入门

重新学习编程语言日记,2011年12月29日   09:17分



//定义一个结构体

struct LINK{
   int age;
   struct LINK *NEXT;
}head,p1,p2;


首先定义了一个结构体,结构体包括指针域,数据域。这个结构体就是你链表里面的节点。每个节点都包括了数据域,指针域。

指针域指向下一个节点的地址。


有了这么一个结构体。肯定就需要初始化这个结构体了。写个函数来初始化链表

int count = 0;   //记录节点个数
struct LINK *LinkListINIT() 
{
    p2=p1=(struct LINK*)malloc(struct LINK); 
    //这样为一个节点分配一个内存空间。内存空间大小是struct LINK 所占用存储空间的大小。
    //p2和p1同时指向这个空间。以后将p2都指向旧的那个节点,p1指向新建的节点
    scanf("%d",&p1->age);
    //为第一个节点的age赋值
    while(p1->age!=0)
    {    //当输入的是0,就结束
          count+=1;   //既然能进入循环,就肯定输入了非0值,就有一个节点了。
          if(count ==1)
		head = p1;           //如果这个是第一个节点,就把head指向第一个,head就是链表的头了,要查找就从head开始
          else
 		p2->NEXT = p1;     //如果不是第一个节点了,p2->NEXT就指向新的节点
       	  p2 = p1; 			//然后p2指向新的节点
	  p1=(struct LINK*)malloc(struct LINK);
          // 然后为下一个节点再开辟一个新空间
          scannf("%d",p1->age);       //为新的节点赋值
       }
       free(p1);        //由于是先开辟空间,再赋值,如果输入是0中断循环,也应该先把新建,而没用上的内存空间释放
       p2->NEXT = NULL //以免成为野指针,赋值为NULL
       return head ;  //返回链表的首地址
}



然后在main函数里面初始化这个链表就可以使用了。


int main(void)
{
	struct LINK *head;
	head=LinkListINIT();
	rerurn 0;
}



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值