| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1791 人关注过本帖
标题:用单链表实现字符串的逆置,哪里错了
取消只看楼主 加入收藏
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
结帖率:95%
收藏
已结贴  问题点数:20 回复次数:5 
用单链表实现字符串的逆置,哪里错了
#include"stdio.H"
#include"string.H"
struct linklist
{
    char data;
    linklist *next;
};
linklist *reverse(linklist *H)
{
    linklist *q,*p=H->next;     //*p指向第一个结点
    H->next=NULL;               //将原链表置空
       while(p->next)
    {
        q=p;                    //将q指向原链表中的第一个结点
        p=p->next;              
        q->next=H->next ;                     
       H->next=q;
    }
    return H;
}
void main()
{
    linklist *H=new linklist;
    linklist *p=H;
    char dat[100];
    int i,n;
    printf("请输入字符串:\n");
    gets(dat);
    n=strlen(dat);
    for(i=0;i<n;i++)
    {
        H->data=dat[i];
        H->next=new linklist;
        H=H->next;
        H->next=0;
    }
    H=reverse(p);
    printf("\n通过链表逆置后的结果为:\n");
    while(H)
    {
        printf("%2c",H->data);
        H=H->next;
    }
    printf("\n");
}
搜索更多相关主题的帖子: 单链 字符 
2010-04-19 20:32
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
收藏
得分:0 
哦。我本来想要一个带头指针的链表的,结果那个链表的建立不会写,就成这个样子了。。。。。
2010-04-21 20:22
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
收藏
得分:0 
#include"stdio.h"
#include "malloc.h"
typedef struct node
{
    int data;
    struct  node *next;
}linklist;
linklist *createlink()
{
    char ch;
    int x;
    linklist *head,*r,*p;
    head=(linklist*)malloc(sizeof(linklist));
    head->next=NULL;
    r=head;
    //ch=getchar();
    while(ch!='\n')
    {
        scanf("%d",&x);
        p=(linklist*)malloc(sizeof(linklist));
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=r->next;
        ch=getchar();
        //scanf("%d",&x);
    }
    return head;
}
void inverse(linklist *H)
{   
    linklist *p,*q;
    p=H->next;
    H->next=NULL;
    while(p!=NULL)
    {
        q=p;
        p=p->next;
        q->next=H->next;
        H->next=q;
    }
    //return H;
}
 void main()
{
    linklist *head ,*p;
    printf("输入数据:\n");
    head=createlink();
    inverse(head);
    p=head->next;
    printf("输出逆置后数据:\n");
    while (p!=NULL)
    {
        printf("%2d",p->data);
        p=p->next;
    }
    printf("\n");
}
    再看看我这个,有头指针的,但是不能逆置了,,
2010-04-21 20:24
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
收藏
得分:0 
有了头结点。不是头指针,写错了,你看起来好像很有实力的样子哦。。不简单,谢谢哦
2010-04-21 20:30
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
收藏
得分:0 
哦。那我的有头结点的链表怎么不能运行处结果呢
2010-04-21 21:21
为了学好C
Rank: 1
等 级:新手上路
帖 子:52
专家分:8
注 册:2010-4-3
收藏
得分:0 
就是输出结果和输入的一样。没有逆置。。。。。
2010-04-22 13:17
快速回复:用单链表实现字符串的逆置,哪里错了
数据加载中...
 
   



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

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