#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* pre;/////////////////
struct Node* next;//////////////////
}Node;
Node* init(){////////////////////////无参数
Node* node=(Node*)malloc(sizeof(Node));
node->data=0;
node->pre=NULL;
node->next=NULL;
return node;
}
void addfirst(Node* list,int data){
Node* node=(Node*)malloc(sizeof(Node));
node->data=data;
if(list->data==0){
node->pre=list;
node->next=list->next;
list->next=node;
}
else{
node->pre=list;
node->next=list->next;
list->next->pre=node;
list->next=node;
}
//list->data++;??????????????????????????
}
void addlast(Node* l,int data){
Node* list=l;////////////
Node* node = (Node*)malloc(sizeof(Node));
node->data=data;
list=list->next;
while(list->next){//////////////////////////
list=list->next;
}
node->next=list->next;
node->pre=list;
list->next=node;
}
void delete(Node* p,int data){
Node* node=p->next;////////////////
while(node){
if(node->data==data){
node->pre->next=node->next;////////////////////////
node->next->pre=node->pre;
free(node);
break;
}
node=node->next;
}
}
void loop(Node* list){
Node* l=list->next;//////////////////
while(l){///////////////////
printf("%d->",l->data);/////////////////////
l=l->next;
}
}
int main()
{
Node* node=init();
addfirst(node,3);
addfirst(node,2);
addfirst(node,1);
addlast(node,4);
delete(node,4);
loop(node);
return 0;
}
引用 皆我百晓生 小程序回复内容作答:
如果删除节点之后不想输出链表,可以在delete函数中将输出代码注释掉,或者删除loop函数的调用,例如:
void delete(Node* p,int data){
Node* node=p->next;
while(node){
if(node->data==data){
node->pre->next=node->next;
node->next->pre=node->pre;
free(node);
break;
}
node=node->next;
}
}
或者将main函数中的loop函数调用删除,如下:
int main()
{
Node* node=init();
addfirst(node,3);
addfirst(node,2);
addfirst(node,1);
addlast(node,4);
delete(node,4);
// loop(node);
return 0;
}
【以下回答由 GPT 生成】
我希望从这段代码中得到链表删除元素后的结果。
【相关推荐】