//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 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路