| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖
标题:求救!!关于链表
只看楼主 加入收藏
wycwyc
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:10 
求救!!关于链表
想了很久了总是得不到预期的结果,哪位高手帮帮忙看看哪里出错了??谢谢!!!!


设计算法删除未排序单链表中和第一个元素相同的重复元素

#include "stdio.h"
#include "malloc.h"

typedef int DataType;
typedef struct node
{ DataType data;
  struct node *next;
}ListNode;

ListNode *make()
{
  ListNode *h,*p;
  int x;
  h=(ListNode *)malloc(sizeof(ListNode));
  h->next=NULL;
  scanf("%d",&x);
  while(x!=0)
  {
      p=(ListNode *)malloc(sizeof(ListNode));
      p->data=x;
      p->next=h->next;
      h->next=p;
      scanf("%d",&x);
  }
  return h;
}

void print(ListNode *h)
{
    ListNode *p;
    p=h->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

void dele(ListNode *h)
{
 ListNode *p,*q,*r;
 p=h->next;r=h->next;
 while(p!=NULL)
 {
   q=p;
   p=p->next;
   if(p->data==r->data)
   {
    q->next=p->next;
    p=q->next;

   }
 }
}

void main()
{
  ListNode *H;
  H=make();
  print(H);
  dele(H);
  print(H);
}
搜索更多相关主题的帖子: 链表 
2008-10-18 17:31
wkl000
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-10-17
收藏
得分:0 
我怀疑 创建链表的代码 有问题
建议你仔细参考一下谭浩强编写的C语言书籍中关于创建链表的那一段代码
2008-10-18 18:27
wycwyc
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-10-18
收藏
得分:0 
好吧~我再看看谢谢了
2008-10-18 18:34
wycwyc
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-10-18
收藏
得分:0 
大家多帮忙啊谢了!!!!!
2008-10-18 18:42
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
#include "stdio.h"
#include "malloc.h"

typedef int DataType;
typedef struct node
{ DataType data;
  struct node *next;
}ListNode;

ListNode *make()
{
  ListNode *h,*p;
  int x;
  h=(ListNode *)malloc(sizeof(ListNode));
  h->next=NULL;
  scanf("%d",&x);
  while(x!=0)
  {
      p=(ListNode *)malloc(sizeof(ListNode));
      p->data=x;
      p->next=h->next;
      h->next=p;
      scanf("%d",&x);
  }
  printf("----------------\n");
  return h;
}

void print(ListNode *h)
{
    ListNode *p;
    p=h->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
    printf("---------------------\n");
}

void dele(ListNode *h)
{
ListNode *p,*q,*r;
p=h->next;
r=h->next;
while(p!=NULL)
{
   q=p;
   p=p->next;
   if(p->data==r->data)
   {
    q->next=p->next;
    p=q->next;

   }
}
}

void main()
{
  ListNode *H;
  H=make();
  print(H);
  dele(H);
  print(H);
}

测试通过
2008-10-18 19:00
wycwyc
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-10-18
收藏
得分:0 
通过了??为什么我的删不了啊~是C版本的错误吗
2008-10-18 19:29
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
ListNode *make()
{
  ListNode *h,*p,*L;
  int x;
  h=(ListNode *)malloc(sizeof(ListNode));
  h->next=NULL;
  L=h;//......................
  scanf("%d",&x);
  while(x!=0)
  {
      p=(ListNode *)malloc(sizeof(ListNode));
      p->data=x;
      p->next=h->next;
      h->next=p;
      h=p;//......................
      scanf("%d",&x);
  }
  return L;
}
2008-10-18 19:40
wycwyc
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2008-10-18
收藏
得分:0 
谢谢版主~~虽然创建链表的数据正过来了可运行时还是删不了~~~~~ 郁闷啊到底为什么
2008-10-18 19:59
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
void dele(ListNode *h)
{
ListNode *p,*q,*r;
p=h->next;r=h->next;//p=r=h;
while(p->next!=NULL)//如果是p!=NULL可能访问无效内存
{
   q=p;
   p=p->next;
   if(p->data==r->data)
   {
    q->next=p->next;
    p=q->next;

   }
}
}

[[it] 本帖最后由 missiyou 于 2008-10-18 20:13 编辑 [/it]]
2008-10-18 20:12
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
我是用VC6.0测试的 能创建和删除重复元素
2008-10-18 20:22
快速回复:求救!!关于链表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057936 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved