| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
乐学 会学 多求 善思千里之行 始于足下
共有 162 人关注过本帖
标题:大佬们帮忙分析下哪里出了错误 谢谢了
只看楼主 加入收藏
风流泰
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2018-9-29
结帖率:94.74%
  已结贴   问题点数:20  回复次数:2   
大佬们帮忙分析下哪里出了错误 谢谢了
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>


typedef struct Node{
    int data;
    struct Node * pNext;
}NODE,*PNODE;


//函数声明
PNODE create_list(void);//创建链表
void traverse_list(PNODE pHead);//遍历链表
bool is_empty(PNODE pHead);//判断链表是否为空
int length_list(PNODE);
bool insert_list(PNODE,int,int);//插入
bool delete_list(PNODE,int,int *);//删除
void soert_list(PNODE);//排序


int main(void){
    PNODE pHead=NULL;
    pHead=create_list();//创建一个非循环链表,并将该链表的头结点地址赋给pHead
    traverse_list(pHead);//遍历链表然后输出
    /*if(is_empty(pHead)){
        printf("链表为空!\n");
    }
    else{
        printf("链表不空!\n");
    } */
    int len=length_list(pHead);
    printf("链表的长度是%d\n",len);
}


//创建一个链表
PNODE create_list(void){
    int len; //用来存放有效结点的个数
    int i;//循环变量
    int val;//用来临时存放用户输入的值
    //分配了一个不存放有效数据的头结点
    PNODE pHead=(PNODE)malloc(sizeof(NODE));
    if(NULL==pHead){
        printf("分配失败,程序终止。!\n");
        exit(-1);
    }
    PNODE pTail=pHead; //pTail和pHead同时指向头结点
    pTail->pNext=NULL;
    printf("请输入你需要生成的链表结点的个数:len=");
    scanf("%d",&len);
    for(i=0;i<len;i++){
        printf("请输入第%d个结点的值:",i+1);
        scanf("%d",&val);
        PNODE pNew=(PNODE)malloc(sizeof(NODE));
        if(NULL==pNew){
            printf("分配失败,程序终止!\n");
            exit(-1);
        }
        pNew->data=val; //把输入val的值存入分配的结点data中
        pTail->pNext=pNew; //把pTail的指针域指向pNew
        pNew->pNext=NULL;//然后把pNew的指针域清空
        pTail=pNew;//最后把pTail指向pNew,使得pTail始终指向pNew
    }
    return pHead; //返回头结点的地址
}


//遍历链表然后输出
void traverse_list(PNODE pHead){
    PNODE p=pHead->pNext; //创建一个指针p,用p指向一个有效结点
    while(NULL!=p){  //判断p指向的数据是否为空
        printf("%d\t",p->data); //p指向的数据不为空,那么输出p指向结构体成员data中的数据
        p=p->pNext;//然后p往后移
    }
    printf("\n");
    return;
}


//判断链表是否为空
bool is_empty(PNODE pHead){
    if(NULL==pHead->pNext){ //判断头结点指针域是否为空
        return true;
    }
    else{
        return false;
    }
}


//判断链表的长度
int inegth_list(PNODE){
    PNODE p=pHead->pNext;
    int len=0;
    while(NULL!=p){
        len++;
        p=p->pNext;
    }
    return len;
}


//链表排序
void soert_list(PNODE){
    int i,j,t;
    PNODE p,q;
    for(i=0,p=pHead->pNext;i<len-1;i++,p->pNext){
        for(j=i+1,q=p->pNext;j<len;j++,q=q->pNext){
            if(p->data>q->data){
                t=p->data;
                p->data=q->data;
                q->data=t;
            }
        }
    }
    return;
}

//错误提示如下
/*108    12    C:\Users\WP-S10\Desktop\练习\未命名3.cpp    [Error] 'pHead' was not declared in this scope
108    27    C:\Users\WP-S10\Desktop\练习\未命名3.cpp    [Error] 'len' was not declared in this scope*/
2019-02-11 11:38
ZJYTY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:41
专家分:265
注 册:2018-12-20
  得分:20 
函数内使用的pHead与len没有传进来

程序代码:
//判断链表的长度
int inegth_list(PNODE){
    PNODE p=pHead->pNext;
    int len=0;
    while(NULL!=p){
        len++;
        p=p->pNext;
    }
    return len;
}


//链表排序
void soert_list(PNODE){
    int i,j,t;
    PNODE p,q;
    for(i=0,p=pHead->pNext;i<len-1;i++,p->pNext){
        for(j=i+1,q=p->pNext;j<len;j++,q=q->pNext){
            if(p->data>q->data){
                t=p->data;
                p->data=q->data;
                q->data=t;
            }
        }
    }
    return;
}

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-02-12 09:49
风流泰
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2018-9-29
  得分:0 
回复 2楼 ZJYTY
好的 谢谢你
2019-02-12 22:31







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040307 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved