标题:实现(7,10,10,21,30,42,42,42,51,70)将变作(7,10,21,30,42 ...
取消只看楼主
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
结帖率:8.33%
 问题点数:0 回复次数:2 
实现(7,10,10,21,30,42,42,42,51,70)将变作(7,10,21,30,42,51,70)
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Node
{
   int data;
   struct Node *next;
}Node;
void IntiList(Node *H)
{
      
    int n,e;
    Node *q=H;
    printf("请输入链表的长度:");
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        Node *p=(Node *)malloc(sizeof(Node));
        printf("请输入结点的数据域:\n");
        scanf("%d",&e);
        p->data=e;
        q->next=p;
        q=p;
        
    }
    q->next=NULL;
}
void LinkTravese(Node *H)
{
    Node *p;
    p=H->next;
    while(p)
    {
           printf("%d ",p->data);
           p=p->next;
    }
}
void fun(Node *H)
{
     Node *p=H->next;
     while(p)
     {
           while(p->data==p->next->data)
           {   
               Node *q;
               q=p->next;
               p->next=q->next;
               free(q);
           }
       p=p->next;
     }
     
}
int main()
{
   Node H;
   IntiList(&H);
   LinkTravese(&H);
   fun(&H);
   LinkTravese(&H);
   return 0;
}
这段程序为什么实现不了,思想没什么问题啊
搜索更多相关主题的帖子: next include 
2013-01-09 21:24
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
我写的为什么错了啊
2013-01-12 17:05
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
void fun(Node *H)//改好了不明白再讨论
 {        Node *r=H;
      Node *p=H->next;
      while(p)
      {    Node *s;
         s=p;
         if(p->next)
         {p=p->next;
            if(p->data==s->data)
            {
                 r->next=s->next;
                 p=r->next;        
            }
            else r=s;
         }
     else break;
     
     }
     
     
 }
p=r->next;  这句话可以删掉吧,有什么作用吗
2013-01-14 19:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-395995-1-1.html




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

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