用数组建立单链表,删除相同元素
这个感觉好多都不懂啊,这是我在网上找的一个例子,但是运行的时候好多错误。。。typedef struct node
{
int data;
struct node *next;
}LNode;
这个是建立单链表吗?链表的名字是LNode吗?
还有哪个地方有错误,哪位大神帮忙指点一下,给点提示,我自己修改
#include<stdio.h>
#include<iostream.h>
typedef struct node
{
int data;
struct node *next;
}LNode;
LNode *Creat_LinkList(int a[],int n)//用长度为n的整形数组创建带头结点的链表
{
LNode *s,*r,*head;
head=s=new LNode;//创建头结点
for(int i=0;i<n;i++)
{
r=new LNode;
r->data =a[i];
s->next=r;
s=r;
}
s->next=NULL;//尾结点Next域置为NULL
return head;//返回头指针
}
void Disp_LinkList(LNode *L)//输出单链表
{
LNode *p;
for(p=L->next;p;p=p->next)
cout<<p->next<<"";
cout<<endl;
}
void pur_LInkList(LNode *H)//删除单链表H中的重复结点
{
LNode *p,*q,*r;
p=H->next;
while(p)
{
q=p;
while(q->next)
{
if(q->next->data==p->data)
{
r=q->next;
q->next=r->next;
delete r;
}
else
q=q->next;
}
p=p->next;
}
}
main()
{
int a[9]={1,2,2,3,3,2,3,3,5};
LNode *L=Creat_LinkList(a,9);//用数组创建单链表
Disp_LinkList(L);
pur_LinkList(L);
Disp_LinkList(L);
return 0;
}