| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:关于单链表的插入问题,很急!!!
取消只看楼主 加入收藏
摇晃昨天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于单链表的插入问题,很急!!!
程序代码:
typedef struct Student
{
    char    num[15];
    char    name[10];
    char    dorm[10];
    char    major[20];
    char    tel[12];
}ST;

typedef struct ListElmt_
{
    void    *data;   //单链表数据域
    struct ListElmt_    *next;
}ListElmt;

typedef struct List_
{
    int        size;;
    ListElmt    *head;
    ListElmt    *tail;
}List
//插入函数
int        list_insert_next(List *list,ListElmt *element,const void *data){
   
        ListElmt        *new_element;

        /*Allocate storage for element */
        if ((new_element = (ListElmt *)malloc(sizeof(ListElmt))) == NULL)        return  -1;

        /* Insert the element to the list */
        new_element->data = (void *)data;
        if (element == NULL)    {//若element为NULL,则新元素插入链表头部

                if (list_size(list) == 0)    list->tail = new_element;

                new_element->next = list->head;
                list->head = new_element;

                }
        else{
                if (element->next == NULL)        list->tail = new_element;

                new_element->next = element->next;
                element->next = new_element;
        }

        list->size++;
        return 0;
}
我通过下面的插入方式插入,但是head和tail指向的都是最后一个插入的元素。
    struct Student        *stu;
    ListElmt            *p;
    char                yes_no = '\0';

    if ((stu = (struct Student *)malloc(sizeof(struct Student))) == NULL)        return  -1;

    do
    {
        printf("学号:");
        scanf("%s",&stu->num);
        printf("姓名:");
        scanf("%s",&stu->name);
        printf("宿舍:");
        scanf("%s",&stu->dorm);
        printf("专业:");
        scanf("%s",&stu->major);
        printf("联系方式:");
        scanf("%s",&stu->tel);
        p = list->tail;
        if (list_insert_next(list,p,(const void *)stu) == 0){
           
            printf("添加成功,还要继续吗(Y/N)?");
            getchar();
            scanf("%c",&yes_no);
           
        }else{
            printf("添加失败,请重试!");
            system("pause");
            yes_no = 'y';
        }       

    } while (yes_no == 'y' || yes_no == 'Y');

由于先前的一个号找不到了,又重新创了个,就20分,我都给了,希望各位大神能帮帮忙,十分感谢!!
2013-01-01 21:07
摇晃昨天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-1
收藏
得分:0 
回复 2楼 不玩虚的
这是数据结构的课程设计,我想用链表做个管理系统,但是插入出现了错误,我就是想请教如何将数据插入链表
2013-01-03 16:19
摇晃昨天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-1
收藏
得分:0 
回复 4楼 wengege
没感觉很繁琐啊,就List结构体中多了几个参数而已,其实还省略了几个封装函数的指针,这用不到没有写出来。
2013-01-04 13:24
摇晃昨天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-1
收藏
得分:0 
回复 6楼 tpyangqing
但是你用的不是链表啊,而且我们数据结构是有要求
2013-01-04 23:38
摇晃昨天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-1
收藏
得分:0 
回复 9楼 不玩虚的
刚刚问了老师,已经搞定了,还是很感谢你!
2013-01-07 19:58
快速回复:关于单链表的插入问题,很急!!!
数据加载中...
 
   



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

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