当前位置: 代码迷 >> C语言 >> [求助]关于双链表的建立与输出问题
  详细解决方案

[求助]关于双链表的建立与输出问题

热度:170   发布时间:2007-04-10 22:14:07.0
[求助]关于双链表的建立与输出问题

今天刚学完那个双链表的有关知识,可遇到了一些问题。
我这个程序的要求事建一个双链表,头节点事空的。
建好后输出。
我的程序是这样的;
#include <stdio.h>
#include <malloc.h>

struct aa
{
int info;
struct aa *left,*right;
};
struct aa *creat()
{
return NULL;
}
struct aa *insert(struct aa *head,int x)
{
struct aa *p;
p=(struct aa *)malloc(sizeof(struct aa));
p->info=x;
if (!head)
{
p->right=NULL;
p->left=NULL;
}
else
{
head->left=p;
p->right=head;
p->left=NULL;
}
head=p;
return head;

}
void disp(struct aa *head1)
{
struct aa *p;
printf("\n");
p=head1;
if (!p)
printf("\n双链表是空的\n");
else
{
printf("\n双链表各个节点值为:\n");
while(p)
{
printf("%-5d",p->info);
p=p->right;
}
}
printf("\n");
}
void main()
{
struct aa *head,*head1,*p;
int n,m;
head=creat();
printf("please input the one date:\n");
scanf("%d",&n);
head1=insert(head,n);
printf("please input the date again:\n");
scanf("%d",&m);
puts("input the list end with '0':\n");
while (m)
{
p=(struct aa *)malloc(sizeof(struct aa));
p->info=m;
head1->right=p;
p->left=head1;
p->right=NULL;
scanf("%d",&m);
}
disp(head1);
}
程序应该是有问题的,希望各位给看看。

[此贴子已经被作者于2007-4-10 22:15:19编辑过]

搜索更多相关的解决方案: 双链表  struct  输出  int  head  

----------------解决方案--------------------------------------------------------
struct aa *insert(struct aa *head,int x)
{
struct aa *p;
p=(struct aa *)malloc(sizeof(struct aa));
p->info=x;
if (!head)
{
p->right=NULL;
p->left=NULL;
head=p;
}
else
{
head->left=p;//感觉写反了.
p->right=head;
p->left=head->left;
}
return head;

}

----------------解决方案--------------------------------------------------------
还是不行!
运行的结果总是只显示首尾两个节点,郁闷。
希望再看看。
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <malloc.h>

struct aa
{
int info;
struct aa *left,*right;
};
struct aa *creat()
{
return NULL;
}
struct aa *insert(struct aa *head,int x)
{
struct aa *p;
p=(struct aa *)malloc(sizeof(struct aa));
p->info=x;
if (!head)
{
p->right=NULL;
p->left=NULL;
}
else
{
head->left=p;
p->right=head;
p->left=NULL;
head->right=NULL;
}
head=p;
return head;

}
void disp(struct aa *head1)
{
struct aa *p;
printf("\n");
p=head1;
if (!p)
printf("\n双链表是空的\n");
else
{
printf("\n双链表各个节点值为:\n");
while(p)
{
printf("%-5d",p->info);
p=p->right;
}
}
printf("\n");
}
void main()
{
struct aa *head,*head1,*head2,*p;
int n,m;
head=creat();
printf("please input the one date:\n");
scanf("%d",&n);
head1=insert(head,n);
head2=head1;
printf("please input the date again:\n");
scanf("%d",&m);
puts("input the list end with '0':\n");
while (m)
{
p=(struct aa *)malloc(sizeof(struct aa));
p->info=m;
head1->right=p;
p->left=head1;
p->right=NULL;
head1=p;
head1->left=NULL;
scanf("%d",&m);
}
disp(head2);
return;
}


----------------解决方案--------------------------------------------------------
今天上机终于弄出来了
真好。
----------------解决方案--------------------------------------------------------
  相关解决方案