首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新.江湖救急菜鸟有关问题.多谢了。

2012-03-20 
新..江湖救急........初学者问题...!~谢谢了。..#includestdio.h#includestdlib.htypedefstructdulnode

新..江湖救急........初学者问题...!~谢谢了。..
#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;


}

热点排行
Bad Request.