#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode *next;
};
struct ListNode *readlist();
struct ListNode *deletem( struct ListNode *L, int m );
void printlist( struct ListNode *L )
{
struct ListNode *p = L;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
int m;
struct ListNode *L = readlist();
scanf("%d", &m);
L = deletem(L, m);
printlist(L);
return 0;
}
/* 你的代码将被嵌在这里 */
struct ListNode *readlist()
{
struct ListNode *l=NULL,*r=NULL,*s;
int x;
while (scanf ("%d",&x),x!=-1)
{
s = (struct ListNode *) malloc(sizeof (struct ListNode));
s->data = x;
if (r)
{
r->next = s;
r = s;
}
else
l = r = s;
}
return l;
}
struct ListNode *deletem( struct ListNode *L, int m )
{
struct ListNode *pre=NULL,*l=L;
while (l)
{
if (l->data==m&&pre)
{
pre->next = l->next;
free(l);
l = pre->next;
}
else if (l->data==m&&pre==NULL)
{
L = l->next;
free(l);
l = L;
}
else
{
pre = l;
l = l->next;
}
}
return L;
}
实验11-2-8 单链表结点删除
于 2023-03-19 16:35:38 首次发布
该程序定义了一个链表节点结构体,实现了从标准输入读取整数序列构建链表,按给定值删除链表中节点的功能,并输出处理后的链表。主要函数包括readlist()用于读取链表,deletem()用于删除节点,以及printlist()用于打印链表。
摘要由CSDN通过智能技术生成