单链表输出没结果,希望能有人解决谢谢,实践活动好粗度记得记得就登记点
4条回答 默认 最新
- 技术专家团-小桥流水 2022-10-06 17:22关注
C语言里没有引用的说法,引用是C++里的概念,你的函数参数里用&的都有问题,改成指针。
运行结果:代码修改如下:
#include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; }Node,*LinkList; void InitList(LinkList *L) { (*L) = (LinkList)malloc(sizeof(Node)); (*L)->next = NULL; } void CreateList(LinkList* L) { LinkList p; int x; char ch; LinkList r = (*L); printf("请输入数据元素:\n"); while(1) { scanf("%d",&x); p = (LinkList)malloc(sizeof(Node)); p->next = NULL; p->data = x; r->next = p; r = p; ch = getchar(); if(ch =='\n') break; } } void InsList(LinkList *L,int i,int e) { int k = 1; LinkList p,t; t = (LinkList)malloc(sizeof(Node)); t->data = e; t->next = NULL; p = *L; while(p && k<i) { p = p->next; k++; } if(p) { t->next = p->next; p->next = t; }else { free(t); t = 0; //插入失败 } } int GetData(LinkList L,int i,int *e) { int k = 1; LinkList p = L->next; while(p && k<i) { p = p->next; k++; } if(k==i) { *e = p->data; return 1;//表示成功 }else return 0;//表示获取失败 } void printfList(LinkList L) { if(!L) { printf("error\n"); return; } LinkList p = L->next; while(p) { printf("%d ",p->data); p = p->next; } printf("\n"); } void DeleteList(LinkList *L,int i) { int k = 1; LinkList p,q; p = *L; while(p->next && k<i) { p = p->next; k++; } if(p->next) { q = p->next; p->next = q->next; free(q); }else printf("删除失败\n"); } int main() { LinkList L; int e=0; InitList(&L); CreateList(&L); printf("新建链表:\n"); printfList(L); InsList(&L,2,25); printf("在第2个位置插入25后:\n"); printfList(L); DeleteList(&L,1); printf("删除第1个元素后:\n"); printfList(L); if(GetData(L,4,&e)) printf("获取第4个元素:%d\n",e); else printf("获取失败\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 抖音咸鱼付款链接转码支付宝
- ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
- ¥15 求螺旋焊缝的图像处理
- ¥15 blast算法(相关搜索:数据库)
- ¥15 请问有人会紧聚焦相关的matlab知识嘛?
- ¥15 网络通信安全解决方案
- ¥50 yalmip+Gurobi
- ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
- ¥15 itunes恢复数据最后一步发生错误
- ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了