有关链表的思考

1.head如何来定义的,tail如何来定义的。

head->node1->node2..........

head可以看成等于第一个node0->next;node1->next就是保存下一个的节点node的首地址的指针。

单链表只能从0往N进行遍历。

第一是定义一个结构体指针,然后用NULL来初始化这个指针防止其成为悬挂指针,把第一个节点的首地址赋给这个head.

最后一个结构体的nodeN->next 用NULL来初始化这个指针防止其成为悬挂指针。

遍历的算法 p(N)=P(N-1)->next;

 

 

 

 

 

 

插入节点:

//需要在stud->num相同这个对象后面加一个对象
struct student *insert(struct student *head,struct student *stud)
{
       struct *temp;
       temp=(struct student *)malloc(sizeof(struct student));
       if(temp==NULL){printf("Out of memory!");exit(0);}
      
       if(head==NULL)    //判断是否是空链表
       {
        temp=stud;      //node0
        temp->next=NULL;}
       
       
       else            //不是空链表,进行遍历查找
      {  temp=head;
          while((stud->num!=temp->num)&&(temp->next!=NULL)){temp=temp->next;}//寻找链表 //一直利用temp来循环查找stud 
          if(temp->next==NULL)     {temp->next=stud;stud->next=NULL; } //找不到stud,那么就在后面 
          if(stud->num==temp->num){stud->next=temp->next;temp->next=stud; } //找到就插入新的,这句语句是否正确????
        }
       
        n=n+1;//node的个数
        return (head)
}

 

三个要点

1.空链表

2.没有找到需要的节点

3.找到插入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值