//main.c
#include<stdio.h>
#include"linklist.h"
int main()
{
LinkList *a=create(5);
puts_(a);
return 0;
}
//linklist.h
typedef struct student{
int score;
struct student* next;
}LinkList;
LinkList *create(int n);
void change(LinkList *list,int n);
void delete(LinkList *list,int n);
void insert(LinkList *list,int n);
void puts_(const LinkList *list);
//linklist.c
#include"linklist.h"
#ifndef _LINKLIST_H_
#define _LINKLIST_H_
/*typedef struct student{
int score;
struct student* next;
}LinkList;*/
LinkList *create(int n){
LinkList *head,*node,*end;
head=(LinkList*)malloc(sizeof(LinkList));
end=head;
int i;
for(i=0;i<n;i++){
node=(LinkList*)malloc(sizeof(LinkList));
printf("请输入数据:\n");
scanf("%d",node->score);
end->next=node;
end=node;
}
end->next=0;
return head;
}
void change(LinkList *list,int n){
LinkList *t=list;
int i=0;
while(i<n&&t!=0){
t=t->next;
i++;
}
if(t!=0){
printf("请输入修改后的值:\n");
scanf("%d",&t->score);
}else
puts("节点不存在");
}
void delete(LinkList *list,int n){
LinkList *t,*in;
int i=0;
t=list;
while(t!=0&&i<n){
in=t;
t=t->next;
i++;
}
if(t!=0){
in->next=t->next;
free(t);
}else{
puts("节点不存在");
}
}
void insert(LinkList *list,int n){
LinkList *t,*in;
int i=0;
t=list;
while(t!=0&&i<n){
t=t->next;
i++;
}
if(t!=0){
in=(LinkList*)malloc(sizeof(LinkList));
puts("要插入的值");
scanf("%d",&in->score);
in->next=t->next;
t->next=in;
}else{
puts("节点不存在");
}
}
void puts_(const LinkList *list){
LinkList *t=list;
while(t!=0){
t=t->next;
printf("%-3d",t->score);
}
}
#endif
学习了链表,但是输出数据总是奇怪,是输出错了还是哪错了呀
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qzjhjxj 2022-03-14 23:03关注
修改处见注释,供参考:
//main.c #include<stdio.h> #include"linklist.h" int main() { LinkList *a=create(5); puts_(a); return 0; } //linklist.h typedef struct student{ int score; struct student* next; }LinkList; LinkList *create(int n); void change(LinkList *list,int n); void Delete(LinkList *list,int n);//delete 是关键字,所以 d 改大写 Delete void insert(LinkList *list,int n); void puts_(const LinkList *list); //linklist.c #include"linklist.h" #ifndef _LINKLIST_H_ #define _LINKLIST_H_ /*typedef struct student{ int score; struct student* next; }LinkList;*/ LinkList *create(int n){ LinkList *head,*node,*end; head=(LinkList*)malloc(sizeof(LinkList)); head->next = NULL; //修改 end=head; int i; for(i=0;i<n;i++){ node=(LinkList*)malloc(sizeof(LinkList)); node->next = NULL; //修改 printf("请输入数据:\n"); scanf("%d",&node->score); //scanf("%d",node->score);修改 end->next=node; end=node; } end->next=0; return head; } void change(LinkList *list,int n){ LinkList *t=list; int i=0; while(i<n&&t!=0){ t=t->next; i++; } if(t!=0){ printf("请输入修改后的值:\n"); scanf("%d",&t->score); }else puts("节点不存在"); } void Delete(LinkList *list,int n){//delete 是关键字,所以 d 改大写 Delete LinkList *t,*in; int i=0; t=list; while(t!=0&&i<n){ in=t; t=t->next; i++; } if(t!=0){ in->next=t->next; free(t); }else{ puts("节点不存在"); } } void insert(LinkList *list,int n){ LinkList *t,*in; int i=0; t=list; while(t!=0&&i<n){ t=t->next; i++; } if(t!=0){ in=(LinkList*)malloc(sizeof(LinkList)); puts("要插入的值"); scanf("%d",&in->score); in->next=t->next; t->next=in; }else{ puts("节点不存在"); } } void puts_(const LinkList *list){ const LinkList *t=list; while(t->next!=0){//while(t!=0) 修改 t=t->next; printf("%-3d",t->score); } } #endif
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 测距传感器数据手册i2c
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法