| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖, 1 人收藏
标题:链表问题
取消只看楼主 加入收藏
lxh30907
Rank: 1
等 级:新手上路
帖 子:22
专家分:9
注 册:2010-12-15
结帖率:60%
收藏(1)
已结贴  问题点数:20 回复次数:3 
链表问题
为什么会出现有乱码的呢?而且输出也有问题。。
求高手解答

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
    char name[20];
    char sno[13];
    int mark;
 }student;

typedef struct Node
{
    student studentInfo;
    struct Node *next;
}LinkList;

LinkList *input()
{
    LinkList *s;
    s=(LinkList *)malloc(sizeof(LinkList));
    s->next=0;
    return s;
}

void insert(LinkList *stu,LinkList *stulist)
{
    LinkList *pointer = stulist;
    LinkList *stupointer =stulist->next;

    while(stupointer!=0&& stupointer->studentInfo.mark<=stu->studentInfo.mark)
    {
        pointer =stupointer;
        stupointer=stupointer->next;
    }
    pointer->next=stu;
    stu->next =stupointer;
}



int search(LinkList *L, char sno[13])
{

    LinkList *S = L,*P;
    while(S && (strcmp(S->studentInfo.sno, sno) != 0))
       S = S->next;
    if(!S->next)
        printf("NO FIND!\n");
    else
    {
        P = S->next;
        S->next = P->next;
        free(S);
    }
    return 0;
}

void main()
{
    LinkList *stulist,*stu,*stupointer;
    stulist=input();
    stu=(LinkList *)malloc(sizeof(LinkList));
    printf("插入3个学生");
    strcpy(stu->studentInfo.sno,"001");
    strcpy(stu->studentInfo.name,"张1");
    stu->studentInfo.mark=90;
    stu->next=0;
    insert(stu,stulist);

    stu=(LinkList *)malloc(sizeof(LinkList));
    strcpy(stu->studentInfo.sno,"002");
    strcpy(stu->studentInfo.name,"张2");
    stu->studentInfo.mark=85;
    stu->next=0;
    insert(stu,stulist);

    stu=(LinkList *)malloc(sizeof(LinkList));
    strcpy(stu->studentInfo.sno,"003");
    strcpy(stu->studentInfo.name,"张3");
    stu->studentInfo.mark=87;
    stu->next=0;
    insert(stu,stulist);
    stupointer=stulist;

    while(stupointer!=0)
    {
        printf("%s,%s,%d\n",stupointer->studentInfo.sno,stupointer->studentInfo.name
                            ,stupointer->studentInfo.mark);

        stupointer=stupointer->next;
    }
    printf("\n");

    printf("删除一个学号为001的学生后:\n");
    search(stu,"001");
    while(stupointer!=0)
    {
        printf("%s,%s,%d\n",stupointer->studentInfo.sno,stupointer->studentInfo.name
                            ,stupointer->studentInfo.mark);

        stupointer=stupointer->next;
    }

}

搜索更多相关主题的帖子: return 
2011-04-17 14:16
lxh30907
Rank: 1
等 级:新手上路
帖 子:22
专家分:9
注 册:2010-12-15
收藏
得分:0 
回复 2楼 死不了的恨
似乎不是这里出问题的
2011-04-18 11:41
lxh30907
Rank: 1
等 级:新手上路
帖 子:22
专家分:9
注 册:2010-12-15
收藏
得分:0 
回复 3楼 死不了的恨
    printf("删除学号为002学生后:\n");
    search(stu,"002");
    stupointer = stulist->next;

    while(stupointer!=0)
    {
        printf("%s,%s,%d\n",stupointer->studentInfo.sno,stupointer->studentInfo.name
                            ,stupointer->studentInfo.mark);

        stupointer=stupointer->next;

我加了这句后能显示输出,但他不能按输入的学号删除
//删除功能
int search(LinkList *L, char sno[13])
{

    LinkList *S = L, *P;
    while(S && (strcmp(S->studentInfo.sno, sno) != 0))
       S = S->next;
    if(!S->next)
        printf("NO FIND!\n");  
    else
    {
        P = S->next;
        S->next = P->next;
        free(P);

    }
    return 0;
}
2011-04-18 11:53
lxh30907
Rank: 1
等 级:新手上路
帖 子:22
专家分:9
注 册:2010-12-15
收藏
得分:0 
回复 9楼 voidx
非常感谢啊·~~不是英文不好,只是因为当时想实现搜索功能,后来放弃了,没改掉而已
2011-04-18 13:34
快速回复:链表问题
数据加载中...
 
   



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

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