对通过用户输入的值,并遍历一次,将用户输入的值倒过来,单向链表进行逆向

思路1:头插法–在头结点插入next对象

typedef struct node_{
    char c;
    struct node_* next;
}abc;
//释放链表
void Free(abc* head)
{
    abc* p;
    while(head != NULL) {
        p = head;
        head = head->next;
        free(p);
    }   
    if(head == NULL) printf("free succes\n");   
}
//头插入
abc* SetHead(abc* head)
{
    abc* a,*b,*c;
    a = head;
    c = (abc*)malloc(sizeof(abc));
    if(a->next == NULL) {
        c->next = NULL;
        a->next = c;
        return a;
    }   
    c->next = a->next;
    a->next = c;
    //    free(c);
    return a;

}
void main()
{
    abc* p,*d;
    p = (abc*)malloc(sizeof(abc));
    p->next = NULL;
    char cc[100];
    printf("please input string:");
    scanf("%s",cc);
    printf("cc = [%s] size = [%d] [%d]\n",cc,strlen(cc),sizeof(cc));
    static int i=0;
    char* pi = cc; 
    while(*pi){
        i++;
        i++;
        p = SetHead(p);
        p->next->c = *pi;
        pi++;
    }
    d = p;
    i=0;
    printf("d=");
    while(d->next != NULL) {
        i++;
        printf("%c",d->next->c);
        d = d->next;
    }
    printf("\n");
    Free(p);
}
结果:
please input string:0123456789
cc = [0123456789] size = [10] [100]
d=9876543210
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值