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

数据结构中关于先序遍历的问题

qq8801103 发布于 2011-09-28 09:55, 531 次点击
程序代码:
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct data)
struct data
{
    int num;
    struct data *next;
};
struct data * creat(void);
struct data * sort(struct data *);
void print(struct data *);
void main()
{
    struct data * head;
    printf("请输入数据(输入结束请按0):\n");
    head=creat();
    printf("您输入的数据为:\n");
    print(head);
    head=sort(head);
    printf("逆序后的数据为:\n");
    print(head);
}

struct data * creat(void)
{
    int n=0;
    struct data * Head,*p1,*p2;
    p1=p2=(struct data *)malloc(LEN);
    scanf("%d",&p1->num);
    Head=NULL;
    while(p1->num!=0)
    {
        n=n+1;
        if(n==1)
            Head=p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(struct data *)malloc(LEN);
        scanf("%d",&p1->num);
    }
    p2->next=NULL;
    return Head;
}

struct data * sort(struct data * Head)
{
    struct data *p,*NewHead=NULL;
    p=NewHead=Head;
    while(NewHead->next!=NULL)
    {
        NewHead=NewHead->next;
        NewHead->next=p;
        p=NewHead;
    }
    Head->next=NULL;
    return NewHead;
}

void print(struct data * Head)
{
    struct data *p;
    p=Head;
    if(Head!=NULL)
        do
        {
            printf("%6d",p->num);
            p=p->next;
        }while(p!=NULL);
    printf("\n");
}
利用顺序栈先序遍历二叉树  输入12##3##
结果没有3 但是有 1 和 2  还出现内存错误  ,
高手解释一下
0 回复
1