#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef struct Node{
int num;
struct Node *next;
}LinkList;
void CreateLinkList(LinkList *L)
{
LinkList *p = L;
for(int i = 0; i < 3; i++)
{
LinkList *s = new LinkList;
scanf("%d", &s->num);
s->next = NULL;
p = p->next = s;
}
}
void ShowLinkList(LinkList *L)
{
LinkList *p = L;
while(p = p->next)
{
printf("%d ", p->num);
}
putchar(10);
}
void AddLinkList(LinkList *L)
{
LinkList *p = L;
while(p = p->next) ;
LinkList *s = new LinkList;
scanf("%d", &s->num);
s->next = NULL;
p->next = s;
}
void DeleteNode(LinkList *L, LinkList *s)
{
if(s->next == NULL)
{
LinkList *p = L;
while(p->next != s)
{
p = p->next;
}
p->next = p->next->next;
delete(s);
}
else
{
LinkList *tmp = s->next;
s->num = s->next->num;
s->next = s->next->next;
delete(tmp);
}
}
int DeleteData(LinkList *L, int val)
{
LinkList *p = L;
while(p = p->next)
{
if(p->num == val)
{
DeleteNode(L, p);
return 1;
}
}
return 0;
}
void DeleteLinkList(LinkList *L)
{
LinkList *p = L->next;
while(p)
{
LinkList *s = p->next;
delete(p);
p = s;
}
}
int main()
{
LinkList *L = new LinkList; //一定要先分配内存再使用,不然新定义的指针都是指向一个相同的初始地址或者为NULL
CreateLinkList(L);
ShowLinkList(L);
DeleteData(L, 5);
ShowLinkList(L);
DeleteLinkList(L);
return 0;
}
链表
最新推荐文章于 2023-01-01 14:24:44 发布