| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:数据结构单链表问题
只看楼主 加入收藏
cl875821804
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2012-11-24
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:11 
数据结构单链表问题
我写的程序编译能通过,但是结果不对,求大神指教
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>



typedef struct LNode
{
    char data;
    struct LNode *next;
}LNode,*Linklist;

Linklist creatlist()
{
    Linklist head,p;
    char ch;
    head=(Linklist)malloc(sizeof(LNode));
    head->next=NULL;
    scanf("%c",&ch);
    while(ch!='\n')
    {
        p=(Linklist)malloc(sizeof(LNode));
        p->data=ch;
        p->next=head->next;
        head->next=p;
        scanf("%c",&ch);
    }
    return head;
}
Linklist findlist(Linklist head,int k)
{
    Linklist p=head;
    int m=0;
    while(p!=NULL&&m<k)
    {
        p=p->next;
        m++;
    }
    return p;
}

int length(Linklist head)
{
    int j=0;
    Linklist p;
    p=head->next;
    while(p!=NULL)
    {
        p=p->next;
        j++;
    }
    return (j);
}
void insertlist(Linklist head,int i,char x)
{
    Linklist p,q;
    if(i<0||i>length(head))
        printf("Error!!");
    else
        {
            p=findlist(head,i-1);
            q=(Linklist)malloc(sizeof(LNode));
            q->data=x;
            q->next=p->next;
            p->next=q;
        }
}
void deletelist(Linklist head,int i)
{
    Linklist p=head->next,q;
    if(i<1||i>length(head))
        printf("Error!!");

        p=findlist(head,i-1);
        q=p->next;
        p->next=q->next;
        free(q);

}
void printlist(Linklist head)
{
    Linklist p=head->next;
    printf("\nhead-->");
    while(p!=NULL)
    {
        printf("%c",p->data);
        p=p->next;
    }
    printf("-->end");
}
void main()
{
    int l;
    Linklist h,p;
    h=creatlist();
    printlist(h);
    l=length(h);
    printf("链表的长度为:%d\n",l);
    insertlist(h,5,'c');
    printlist(h);
    l=length(h);
    printf("链表的长度为:%d\n",l);
    p=findlist(h,5);
    printf("找到的元素为:%d\n",p->data);
    deletelist(h,4);
    printlist(h);
    l=length(h);
    printf("链表的长度为:%d\n",l);
}
搜索更多相关主题的帖子: next include 
2012-11-24 12:05
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:1 
回复 楼主 cl875821804
什么结果不对?

把不对的操作产生过程 贴出来......
2012-11-24 12:36
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
首先楼主输入abcdefg时  ,必定显示的是gfedcba , 由链表的结构所致
另外printf("找到的元素为:%d\n",p->data);此处将%d 改为 %c
 
2012-11-24 12:53
cl875821804
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2012-11-24
收藏
得分:0 
a b d e f g

head-->g f e d b a-->end链表的长度为:11

head-->g f ce d b a-->end链表的长度为:12
找到的元素为:c

head-->g fce d b a-->end链表的长度为:11
Press any key to continue

just do it
2012-11-24 15:06
cl875821804
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2012-11-24
收藏
得分:0 
已经改成%c,还是不行

just do it
2012-11-24 15:06
萨尔甘
Rank: 2
等 级:论坛游民
帖 子:23
专家分:55
注 册:2012-11-22
收藏
得分:1 
return (j); 可以这样用吗?
2012-11-24 15:33
lxq6966892
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2012-10-4
收藏
得分:1 
可以这样用
2012-11-24 15:58
lxq6966892
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2012-10-4
收藏
得分:3 
应该是输入的时候空格也算是一个字符吧?
2012-11-24 16:03
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:4 
楼上正解,输入时不要空格,直接输入 例如:abcdefghjk
2012-11-24 17:08
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
回复 楼主 cl875821804
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-11-24 17:24
快速回复:数据结构单链表问题
数据加载中...
 
   



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

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