#define _CRT_SECURE_NO_WARNINGS
/*在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法实现上述操作。*/
#include<stdio.h>
#include <malloc.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode, * LinkList;
int a[4] = {1,2,3,4};
int n = 4;
/// <summary>
/// 尾插法建立单链表
/// </summary>
/// <param name="L"></param>
void List_TailInsert(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
LNode* s,*r=L; //r为表尾指针
for (int i = 0; i < n; i++)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = a[i];
r->next = s;
r = r->next; //即r=s
}
r->next = NULL;
}
void disp(LinkList L)
{
LNode* s = L->next;
while (s)
{
printf("%d", s->data);
s = s->next;
}
}
void ListDelete(LinkList& L, int x)
{
LNode* p = L->next, * q, * r = L;
while (p)
{
if (p->data != x)
{
r->next = p;
r = p;
p = p->next;
}
else
{
q = p;
p = p->next;
free(q);
}
}
}
int main()
{
LinkList L;
List_TailInsert(L);
printf("原始链表数据为:");
disp(L);
ListDelete(L,3);
printf("\n删除后链表数据为:");
disp(L);
return 0;
}
25王道代码题2_3_01
最新推荐文章于 2024-10-03 23:25:47 发布