鱼C论坛

 找回密码
 立即注册
查看: 2987|回复: 0

[技术交流] C 语言实现单链表,出现错误,

[复制链接]
发表于 2013-10-20 19:52:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
typedef int elemType ;

struct sNode{    /* 定义单链表结点类型 */
        elemType data;
        struct sNode *next;
};
/* 1.初始化线性表,即置单链表的表头指针为空 */
void initList(struct sNode* *hl)
{
        *hl = NULL;
        return;
}

/* 6.遍历一个单链表 */
void traverseList(struct sNode *hl)
{
        while(hl != NULL){
                printf("%5d", hl->data);
                hl = hl->next;
        }
        printf(" ");
        return;
}

/* 10.向单链表的末尾添加一个元素 */
void insertLastList(struct sNode* *hl, elemType x)
{
        struct sNode *newP;
        newP =(sNode *) malloc(sizeof(struct sNode));
        if(newP == NULL){
                printf("内在分配失败,退出运行! ");
                exit(1);
        }
        /* 把x的值赋给新结点的data域,把空值赋给新结点的next域 */
        newP->data = x;
        newP->next = NULL;
        /* 若原表为空,则作为表头结点插入 */
        if(*hl == NULL){
                *hl = newP;        
        }
        /* 查找到表尾结点并完成插入 */
        else{
                struct sNode *p = NULL;
                while(p->next != NULL){
                        p = p->next;
                }
                p->next = newP;
        }
        return;
}

/* 3.返回单链表的长度 */
int sizeList(struct sNode *hl)
{
        int count = 0;        /* 用于统计结点的个数 */
        while(hl != NULL){
                count++;
                hl = hl->next;
        }
        return count;
}

/* 9.向单链表的表头插入一个元素 */
void insertFirstList(struct sNode* *hl, elemType x)
{
        struct sNode *newP;
        newP =(sNode *) malloc(sizeof(struct sNode));
        if(newP == NULL){
                printf("内存分配失败,退出运行! ");
                exit(1);
        }
        newP->data = x;        /* 把x的值赋给新结点的data域 */
        /* 把新结点作为新的表头结点插入 */
        newP->next = *hl;        
        *hl = newP;
        return;
}

int main(int argc, char* argv[])
{
        int a[5]={1,2,3,4,5};
        int i;
        struct sNode *p;
        initList(&p);

        for(i = 0; i < 5; i++){
                insertLastList(&p, a[i]);
        }
        int m=sizeList(p);
        printf("%d\n",m);
        traverseList(p);
}
insertLastList(&p, a[i]);这个函数出现错误,希望大家帮忙修改一下,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表