题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
分析:找到删除结点的后面的节点,将其内容复制到该删除的节点,然后删除后面这个节点即可。
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int value;
struct node *next;
}node,*pnode;
void create_list(pnode *head)
{
pnode p,q;
int i;
for(i=1;i<10;i++)
{
if(i==1)
{
p = (pnode)malloc(sizeof(node));
if(!p)
{
printf("分配空间失败!\n");
return;
}
p->value = i;
p->next = NULL;
*head = p;
q = p;
}
else
{
p = (pnode)malloc(sizeof(node));
if(!p)
{
printf("分配空间失败!\n");
return;
}
p->value = i;
p->next = NULL;
q->next = p;
q = p;
}
}
printf("创建节点为:\n");
p = *head;
while(p)
{
printf("%d\t"