如果我们只知道最后一个节点的地址,我们能删除单个链表的最后一个节点吗

人气:127 发布:2023-01-03 标签: singly-linked-list

问题描述

//变量

typedef struct node 
 { 
    int value; 
    struct node *next; 
 }mynode;

//全局变量(但不是必需的)。

mynode *head, *tail, *temp; 

//函数

void add(int value);

//向链表添加新节点的函数

 void add(int value)
 {
    temp = (mynode *) malloc(sizeof(struct node));
    temp->next=(mynode *)0;
    temp->value=value;

    if(head==(mynode *)0)
    {
       head=temp;
       tail=temp;
    }
    else
    {
      tail->next=temp;
      tail=temp;
    }
 }

//main()函数

int main()
 {
     head=(mynode *)0;

     // Construct the linked list.
     add(1);
     add(2);
     add(3);

     return(0);
 }

如果我只有一个指向节点的指针,它的值是3(前面代码中看到的最后一个节点),我们是否可以删除它并将值为2(前面提到的代码)的节点作为最后一个节点。

推荐答案

否,但如果您知道自己在做什么,则可以就地修改最后一个节点。删除最后一个节点需要访问倒数第二个节点,特别是其到最后一个节点的链接。

17