问题描述
//变量
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(前面提到的代码)的节点作为最后一个节点。
推荐答案
否,但如果您知道自己在做什么,则可以就地修改最后一个节点。删除最后一个节点需要访问倒数第二个节点,特别是其到最后一个节点的链接。