注册 登录
编程论坛 数据结构与算法

用数组建立单链表,删除相同元素

q869939686 发布于 2013-05-04 10:23, 955 次点击
这个感觉好多都不懂啊,这是我在网上找的一个例子,但是运行的时候好多错误。。。
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;
}
6 回复
#2
笑傲2013-05-04 12:31
#include<stdio.h>
#include<iostream.h>

typedef struct node
{
    int data;
    struct node *next;
}LNode;                              //将结构体改名为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->data<<" ";                     //这里改动了,原来是p->next,改为了p->data;
   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;
  }
}
int 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;
}
#3
q8699396862013-05-04 23:34
还少一个
using namespace std;
#4
邓士林2013-05-05 21:56
细心哦!
#5
际遇082013-05-08 21:24
我也在学数据结构,有点难!
#6
不玩虚的2013-05-09 13:16
支持踏实学习,认真思考的孩子,学习很好玩,可是也很麻烦
#7
cq199405252013-05-31 09:23
为什么我们学的代码和这不一样
1