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

单链表插入删除功能实现问题,可以运行但得不到渴望解,求指点

a04153138665 发布于 2014-04-03 16:23, 491 次点击
#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
typedef struct Lnode
{elemtype data;
struct Lnode *next;
}Lnode;
typedef struct Lnode * Linklist;
void Initlist(Linklist&l)
{l->next=NULL;
}
void Creatlist(Linklist&l,int n)
{int i;
Linklist q=NULL;
Linklist p=NULL;
p=l;
for(i=1;i<=n;++i)
  {q=(Linklist)malloc(sizeof(Lnode));
   scanf("%d",&(q->data));
   p->next=q;
   p=q;
  }
p->next=NULL;
}
void Insertlistelem(Linklist&l,int i,elemtype e)
{Linklist q=NULL;
 Linklist p=l;
 int j;
if(i==1)
  {q=(Linklist)malloc(sizeof(Lnode));
   scanf("%d",&e);
   q->next=p->next;
   p->next=q;
  }
else
  {for(j=1;j<i;++j)
     {p=p->next;
     }
   q=(Linklist)malloc(sizeof(Lnode));
   scanf("%d",&e);
   q->next=p->next;
   p->next=q;
  }
}
void Deletelistelem(Linklist &l,int i,elemtype &e)
{Linklist p=l;
 Linklist q=NULL;
 int j;
 if(i==1)
   {q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
   }
 else
   {for(j=1;j<i;++j)
      {p=p->next;
      }
    q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
   }   
}
void Travellist(Linklist &l)
{Linklist p=NULL;
 p=l;
 while(p->next)
   {p=p->next;
    printf("%3d",p->data);
   }
}
void Destorylist(Linklist&l,int n)
{int i;
 int j;
 Linklist p=NULL;
for(i=n;i>=1;--i)
  {p=l;
   for(j=1;j<=i;++j)
     {p=p->next;
     }
   free(p);
  }
 free(l);
}  
 
main()
{elemtype r;
 Linklist Head=(Linklist)malloc(sizeof(Lnode));
 Initlist(Head);
 Creatlist(Head,8);
 Travellist(Head);
 printf("\n");
 Insertlistelem(Head,4,200);
 Travellist(Head);
 printf("\n");
 Deletelistelem(Head,3,r);
 Travellist(Head);
 printf("%d",r);
 system("pause");
 Destorylist(Head,8);
}
 
 
 
 
   
         
  
      
  
  
  
 

0 回复
1