注册 登录
编程论坛 C++教室

这个程序哪儿出错,或者还应该改进哪儿

l376365333 发布于 2010-12-01 18:52, 512 次点击
#include<stdio.h>
#include<malloc.h>
typedef struct linka
{
    int data;
    struct linka *next;
}link;
void reverse(link *&head)
{
    if(head==NULL)return;
    linka *pre,*cur,*ne;
    pre=head;
    cur=head->next;
    while(cur)
    {
        ne=cur->next;
        cur->next=pre;
        pre=cur;
        cur=ne;
    }
    head->next=NULL;
    head=pre;
    while(head)
    {
        printf("=%d=",head->data );
        head=head->next ;
    }
}
void main(void)
{
    link *p,*q;
    link *head=(link *)malloc(sizeof(link));
    p=head;
    for(int i=0;i<10;i++)
    {
        p->data =i+1;
        q=(link *)malloc(sizeof(link));
        p->next =q;
        p=q;
    }
    p->next =NULL;
    reverse(head);
   
}
4 回复
#2
l3763653332010-12-01 19:05
#include<stdio.h>
#include<malloc.h>
typedef struct linka
{
    int data;
    struct linka *next;
}link;
void reverse(link *head)
{
    if(head==NULL)return;
    linka *pre,*cur,*ne;
    pre=head;
    cur=head->next;
    while(cur)
    {
        ne=cur->next;
        cur->next=pre;
        pre=cur;
        cur=ne;
    }
    head->next=NULL;
    head=pre;
    while(head)
    {
        printf("=%d=",head->data );
        head=head->next ;
    }
}
void main(void)
{
    link *p,*q;
    link *head=(link *)malloc(sizeof(link));
    p=head;
    for(int i=0;i<10;i++)
    {
        p->data =i+1;
        q=(link *)malloc(sizeof(link));
        p->next =q;
        p=q;
    }
    p->next =NULL;
    reverse(head);
   
}
上边那个有点错
#3
qq88011032010-12-02 14:58
请问你想得到什么样的答案,
#4
xishui7772010-12-02 23:13
好象是链表逆置,不过看着有点乱
#5
li_danwang2010-12-03 17:27
#include<stdio.h>
#include<malloc.h>
typedef struct linka
{
    int data;
    struct linka *next;
}link;

void reverse(link *&head)
{
    if(head==NULL)
        return;
    linka *pre,*cur,*ne;
    cur=head->next;
    pre=cur->next;
    cur->next=NULL;
    while(pre!=NULL)
    {
        ne=pre->next;
        pre->next=head->next;
        head->next=pre;
        pre=ne;
    }
         linka *temp=head->next;
         while(temp!=NULL)
        {
            printf("%d ",temp->data );
             temp=temp->next ;
        }
}

void main(void)
{
    link *p,*q;
    link *head=(link *)malloc(sizeof(link));
    p=head;
    for(int i=0;i<10;i++)//&Icirc;&sup2;&sup2;&aring;
    {
      
        q=(link *)malloc(sizeof(link));
        q->data =i+1;
        p->next =q;
        p=q;
    }
    p->next =NULL;
    reverse(head);

   

   
}
1