#include <bits/stdc++.h>
using namespace std;
typedef struct List_Node{
int date;
struct List_Node * Next;
}List_Node,*ListNode;
//创建空表
ListNode creatList(){
ListNode head; //创建头结点
head = NULL; //创建空表,表中无元素,所以头结点直接指向空
return head; //返回头结点
}
//在第n个结点的后面添加结点,数据为x
void insert(ListNode head,int n,int x){
ListNode p = head;
int num = 0;
while(num != n && p->Next == NULL){
num ++;
p = p->Next;
}
if(num == n){
ListNode s = (ListNode) malloc (sizeof(List_Node));
s->date = x;
s->Next = p->Next;
p->Next = s;
}
}
//遍历整个链表
void ergodic(ListNode head){
while(head->Next != NULL){
head = head->Next;
cout << head->date << ends;
}
}
int main()
{
ListNode head = creatList();
int n,x;
cin >> n >> x;
insert(head,n,x);
cout << x << n;
ergodic(head);
return 0;
}
写链表的时候段错误了
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2022-03-12 15:17关注
(1)你的creatList函数中没有创建链表啊。代码修改如下:
//创建空表 ListNode creatList(){ ListNode head = (ListNode) malloc (sizeof(List_Node)); head->Next = NULL; //head = NULL; //创建空表,表中无元素,所以头结点直接指向空 return head; //返回头结点 }
(2)insert函数中,while循环的条件写错了,while(num != n && p->Next == NULL) 应该是 while(num != n && p->Next != NULL)
(3)insert函数中,num从1开始
(4)你的代码中链表只有1个节点,只能在第1个节点后插入数据。
代码修改后测试结果如下:修改后的代码:
#include <bits/stdc++.h> using namespace std; typedef struct List_Node{ int date; struct List_Node * Next; }List_Node,*ListNode; //创建空表 ListNode creatList(){ ListNode head = (ListNode) malloc (sizeof(List_Node)); head->Next = NULL; //head = NULL; //创建空表,表中无元素,所以头结点直接指向空 return head; //返回头结点 } //在第n个结点的后面添加结点,数据为x void insert(ListNode head,int n,int x){ ListNode p = head; int num = 1;//这里从1开始 while(num != n && p->Next != NULL){ num ++; p = p->Next; } if(num == n){ ListNode s = (ListNode) malloc (sizeof(List_Node)); s->date = x; s->Next = p->Next; p->Next = s; } } //遍历整个链表 void ergodic(ListNode head){ ListNode p = head->Next; while(p != NULL){ //head = head->Next; cout << p->date << ends; p = p->Next; } } int main() { ListNode head = creatList(); int n,x; cin >> n >> x; insert(head,n,x); //cout << x << n; //这一句没用 ergodic(head); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
- ¥15 孟德尔随机化怎样画共定位分析图
- ¥18 模拟电路问题解答有偿速度
- ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
- ¥15 误删注册表文件致win10无法开启
- ¥15 请问在阿里云服务器中怎么利用数据库制作网站
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址