辣条星星 2022-04-18 19:34 采纳率: 100%
浏览 21
已结题

在不弄单链表长度情况下,为什么没有逆转成功?

#include<stdio.h>

#include<stdlib.h>

#define OK 1

#define ERROR -1

typedef int Status;

typedef int ElemType;

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList;

Status InitList(LinkList &L){

L = new LNode;

L->next = NULL;

return OK;

}

void CreateList(LinkList &L,int m){

LinkList t;

printf("请输入数值:");

for(int p = 0 ; p < m ; p++){

    t = new LNode;

    scanf("%d",&t->data);

    t->next = L->next;

    L->next = t;

}

}

void CreateList_1(LinkList &L){

LinkList t;

ElemType data;

printf("");

while (1){

      if (scanf("%d",&data) == 1){

          t = new LNode;

          t->data = data;

          t->next = L->next;

          L->next = t;

      }

      if ((getchar()) == '\n') break; 

}

}
void Inverse(LinkList& L)
{
LinkList p, q;
q = L;
p = NULL;
while (q != NULL)
{
p = q;
q = q->next;
p->next = L;
L = p;

}

}

void showList(LinkList L)
{
LinkList p = L;
while (p->next) {
printf("%d ", p->next->data);
p = p->next;
}
printf("\n");
}

int main(){

int n;

LinkList L,L1;   

InitList(L1);     

CreateList_1(L1);

Inverse(L1); 
  
showList(L1); 
return 0;

}

img

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-04-18 21:08
    关注

    供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #define OK 1
    #define ERROR -1
    typedef int Status;
    
    typedef int ElemType;
    
    typedef struct LNode{
        ElemType data;
        struct LNode *next;
    }LNode,*LinkList;
    
    Status InitList(LinkList &L){
        L = new LNode;
        L->next = NULL;
        return OK;
    }
    
    void CreateList(LinkList &L,int m){//头插法生成链表
        LinkList t;
        printf("请输入数值:");
        for(int p = 0 ; p < m ; p++){
            t = new LNode;
            scanf("%d",&t->data);
            t->next = L->next; //头插法
            L->next = t;
        }
    }
    
    void CreateList_1(LinkList &L){ //头插法生成链表
        LinkList t;
        ElemType data;
        printf("");
        while (1){
          if (scanf("%d",&data) == 1){
              t = new LNode;
              t->data = data;
              t->next = L->next;   //头插法
              L->next = t;
          }
          if ((getchar()) == '\n') break;
        }
    }
    void Inverse(LinkList& L) //带头结点链表 逆置
    {
        LinkList p, q;
        q = L->next;   //修改
        p = NULL;
        L->next = NULL;//修改
        while (q != NULL)
        {
            p = q;
            q = q->next;
            p->next = L->next; //修改
            L->next = p;       //修改
        }
    }
    
    void showList(LinkList L)
    {
        LinkList p = L;
        while (p->next) {
            printf("%d ", p->next->data);
            p = p->next;
        }
        printf("\n");
    }
    
    int main(){
        int n;
     
        LinkList L,L1;
    
        InitList(L1);  //初始化 创建头结点
    
        CreateList_1(L1); // 创建链表
        printf("逆置前链表:");
        showList(L1);     //输出链表看看
    
        printf("逆置后链表:");
        Inverse(L1);      //逆置链表
        showList(L1);     //逆置后链表看看
      
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度