首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

这个算法到底错在哪? 好久没看出!解决方法

2012-02-12 
这个算法到底错在哪? 好久没看出!删除有序递增单链表上相同的元素 算法如下 但老是不成功 错在哪?#include

这个算法到底错在哪? 好久没看出!
删除有序递增单链表上相同的元素 算法如下 但老是不成功 错在哪?
#include<stdio.h>
#include<stdlib.h>
#define datatype1 int
#define null 0
#define end -1
#define d "%d"
#define len sizeof(linklist)
typedef struct node
{
  datatype1 data;
  struct node *next;
}linklist;
/*头插入法建表函数*/
linklist *creatlinkh()
{
  linklist *t,*head;
  datatype1 x;
  t=(linklist *) malloc(len);
  t->next=null;head=t;
  printf("请有序输入数据:\n");
  scanf(d,&x);
  while(x!=end)
  { t=(linklist *) malloc(len);
  t->data=x;
  t->next=null;
  t->next=head->next;
  head->next=t;
  scanf(d,&x);
  }
  return(head);
}
/*删除元素*/
int del(linklist *head)
{
  linklist *p,*t;
  p=head->next;
  while(p->next!=null)
  {
  t=p->next;
  if(t->data==p->data)
  {
  p->next=t->next->next;
  free(t);
  }
  else 
  p=p->next;
  }

}
/*链表输出函数*/
void printlink(linklist *head)
{
  linklist *p;
  p=head;
  printf("link is:");
  while(p->next!=null)
  {
  p=p->next;
  printf("%d->",p->data);
  }
  printf("\b\b \n");
}
void main()
{
  linklist *hd1=null;
  hd1=creatlinkh();
  printlink(hd1);
  del(hd1);
  printlink(hd1);
}



[解决办法]
马虎了

C/C++ code
#include <stdio.h > #include <stdlib.h > #define   datatype1   int #define   null   0 #define   end   -1 #define   d   "%d " #define   len   sizeof(linklist) typedef   struct   node {         datatype1   data;         struct   node   *next; }linklist; /*头插入法建表函数*/ linklist   *creatlinkh() {         linklist   *t,*head;         datatype1   x;         t=(linklist   *)   malloc(len);                 t->next=null;head=t;         printf( "请有序输入数据:\n ");         scanf("%d",&x); //你这个地方错了        while(x!=end)         {       t=(linklist*)malloc(len);                 t->data=x;                 t->next=null;                 t->next=head->next;                 head->next=t;                 scanf("%d",&x); //还有这个地方        }         return(head); } /*删除元素*/ int   del(linklist   *head) {         linklist   *p,*t;         p=head->next;         while(p->next!=null)         {                       t=p->next;                   if(t->data==p->data)                   {                           p->next=t->next->next;                           free(t);                   }                 else                             p=p->next;         } } /*链表输出函数*/ void   printlink(linklist   *head) {         linklist   *p;         p=head;         printf( "link   is: ");         while(p->next!=null)         {                 p=p->next;                 printf( "%d- > ",p->data);         }         printf( "\b\b     \n "); } int main() {         linklist   *hd1=null;         hd1=creatlinkh();         printlink(hd1);         del(hd1);         printlink(hd1);         getchar();        getchar();        return 0;}
[解决办法]
t- >data=x; 


t- >next=null; 
t- >next=head- >next; 
head- >next=t; 
这里好像 不对啊

热点排行