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

菜鸟提问,实在不懂了。

2012-02-07 
初学者提问,实在不懂了。。求助!!C/C++ codevoid reverse(linklist *&L){linklist *pL-next,*qL-nextNU

初学者提问,实在不懂了。。求助!!

C/C++ code
void reverse(linklist *&L){    linklist *p=L->next,*q;    L->next=NULL;    while(p){        q=p->next;        p->next=L->next;        L->next=p;        p=q;    }}
vc6.0编译这段代码会出现“0xc0000005 access violation”错误,把“while(p)”改成for循环就能通过了。下面是完整的代码
C/C++ code
#include <stdio.h>#include <malloc.h>typedef struct Lnode{    int data;    struct Lnode *next;}linklist;void create_TOU(linklist *&L,int r[],int length){    linklist *newnode;    L=(linklist*)malloc(sizeof(linklist));        L->data=length;    for(int i=0;i<length;i++){        newnode=(linklist*)malloc(sizeof(linklist));        newnode->data=r[i];        newnode->next=L->next;        L->next=newnode;    }}void printL(linklist *L){    int length=L->data;    printf("The length is: %d\n",L->data);    L=L->next;    printf("The value is:");    for(int i=0;i<length-1;i++){        printf("%d->",L->data);        L=L->next;    }    printf("%d\n",L->data);}void reverse(linklist *&L){    linklist *p=L->next,*q;    L->next=NULL;    while(p){        q=p->next;        p->next=L->next;        L->next=p;        p=q;    }}int main(){    int r[]={45,89,33,12,59,879,6};    int length=sizeof(r)/sizeof(r[0]);    linklist* myL;    create_TOU(myL,r,length);    printL(myL);    reverse(myL);    printL(myL);    return 0;}


[解决办法]
C/C++ code
void create_TOU(linklist *&L,int r[],int length){    linklist *newnode;    L=(linklist*)malloc(sizeof(linklist));        L->data=length;    L->next = 0; //既然你的结束条件是next为0,就得想办法保证 

热点排行