新..江湖救急........初学者问题...!~谢谢了。..
#include <stdio.h>
#include <stdlib.h>
typedef struct dulnode //定义双向链表.....
{
int data; //双向链表的数据域.....
struct delnode *prior ; //双链表的头指针......
struct delnode *next ; //双链表的尾指针......
} *dulinklist ;
insertdelink(dulinklist l,int m,int i); //插入函数的申明......
int initdulink(dulinklist l) //新键双链表....
{
l=(dulinklist )malloc(sizeof(dulinklist )); //双链表开空间....
if(l==NULL)
return 0 ;
l-> prior=NULL; //双链表为空.....
l-> next=NULL; //双链表为空......
return 1;
}
int createdulink(dulinklist l) //创建链表..
{
int i,m;
for(i=1;i <=10;i++)
{
scanf( "%d ",&m);
insertdelink(l,m,i);
}
}
int insertdulink(dulinklist l,int m,int i) //这个是双链表的插入...
{
int j,n;
dulinklist s,p;
p=l;
for(j=0;j <i-1;j++) //用for语句查找......
p=p-> next ; //进行查找......
s=(dulinklist )malloc(sizeof(dulinklist )) ; //对新结点开空间.....
s-> data=m; //把插入的数给新键结点.....
s-> next=p-> next ;
p-> next-> prior=s ;
p-> next=s ;
s-> prior=p; //对新结点进行插入....
return 1;
}
int main()
{
int i,j;
dulinklist a;
initdulink(&a );
createdulink(&a);
for(i=a.next;a;i++) //输出所以数据...
printf( "%d ",a.data);
return 1;
}
编译有错....有好多错...但不知道为什么错了...请高手帮忙...
[解决办法]
你的问题在于你创建的链表,在主函数那边跟本没有收到,因为你的指针是传值的,像我下面这样改一下试试:
#include <stdio.h>
#include <stdlib.h>
typedef struct dulnode //定义双向链表.....
{
int data; //双向链表的数据域.....
struct delnode *prior ; //双链表的头指针......
struct delnode *next ; //双链表的尾指针......
} *dulinklist ;
insertdelink(dulinklist l,int m,int i); //插入函数的申明......
int initdulink(dulinklist &l) //新键双链表....,,改为指针的引用&l
{
l=(dulinklist )malloc(sizeof(dulinklist )); //双链表开空间....
if(l==NULL)
return 0 ;
l-> prior=NULL; //双链表为空.....
l-> next=NULL; //双链表为空......
return 1;
}
int createdulink(dulinklist &l) //创建链表..,,改为指针的引用&l
{
int i,m;
for(i=1;i <=10;i++)
{
scanf( "%d ",&m);
insertdelink(l,m,i);
}
}
int insertdulink(dulinklist l,int m,int i) //这个是双链表的插入...
{
int j,n;
dulinklist s,p;
p=l;
for(j=0;j <i-1;j++) //用for语句查找......
p=p-> next ; //进行查找......
s=(dulinklist )malloc(sizeof(dulinklist )) ; //对新结点开空间.....
s-> data=m; //把插入的数给新键结点.....
s-> next=p-> next ;
p-> next-> prior=s ;
p-> next=s ;
s-> prior=p; //对新结点进行插入....
return 1;
}
int main()
{
int i,j;
dulinklist a;
initdulink(a ); //这里&a改为a,
createdulink(a); //这里&a改为a,
for(dulinklist p=a-> next;a;p=p-> next) //输出所以数据...,,这里全改了
printf( "%d ",a-> data); //a是指针啊,要用->
return 1;
}