代码如下:
#include<stdio.h>
#include<malloc.h>
#include<iostream>
#include<math.h>
using namespace std;
typedef struct LNode//结构体
{
int data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;//别名
void CreateList(LinkList &L,int n)//创建单链表
{
L = (LinkList)malloc(sizeof(LNode));//分配空间并使L指之
L->next=NULL;
LinkList p=L;
int i;
for(i=0;i<n;i++)
{
LinkList p1;
p1=(LinkList)malloc(sizeof(LNode));//分配空间
scanf("%d",&p1->data);
p1->next= p->next;
p->next=p1;
p=p1;
}
//p->next=NULL;
}
void Delete(LinkList &L)//删除绝对值相同的节点
{
LinkList q;
q=L->next;
while(q->next)//q的下一个节点不为空
{
LinkList p=q;
while(p->next)//p的下一个节点不为空
{
if(fabs(q->data)==fabs(p->next->data))
{
LinkList s = p->next;
p->next=s->next;
free(s);
}
else
p=p->next;
}
if(q->next==NULL)
break;
else q=q->next;
}
}
int main()//主函数
{
LinkList L1;
int n1;
printf("请输入数据个数:");
scanf("%d",&n1);
printf("请输入数据:");
CreateList(L1,n1);
printf("删除绝对值相等的数据后,输出数据:");
Delete(L1);
LinkList q;
q=L1->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
}