C shift插入链表
我想在此函数根的开头插入:C shift插入链表,c,struct,linked-list,singly-linked-list,C,Struct,Linked List,Singly Linked List,我想在此函数根的开头插入: struct elem{ int值; 结构元素*下一步; }; 类型定义结构元素节点; void shiftInsert(节点*n,int v){ int tmp; 而(n!=NULL){ n=n->next; } } 当节点*n为: 1->2->3->4->5并调用shiftInsert(88) 节点*n的输出需要: 88->1->2->3->4如何实现这一点?看起来shiftInsert被设计为在链表的开头插入一个值,然后将第一个节点(前一个)的值推送到下一
struct elem{
int值;
结构元素*下一步;
};
类型定义结构元素节点;
void shiftInsert(节点*n,int v){
int tmp;
而(n!=NULL){
n=n->next;
}
}
当节点*n
为:
1->2->3->4->5
并调用shiftInsert(88)
节点*n
的输出需要:
88->1->2->3->4
如何实现这一点?看起来
shiftInsert
被设计为在链表的开头插入一个值,然后将第一个节点(前一个)的值推送到下一个节点,重复,直到最后一个值被“移位”关闭。我想尝试一下:
void shiftInsert(节点*n,int v){
节点*迭代器=n;
int-tmpPrev=v;
int-tmpCurr=0;
while(迭代器!=NULL){
//保存当前值
tmpCurr=迭代器->值;
//设置新值
迭代器->值=tmpPrev;
//保存旧值
tmpPrev=tmpCurr;
//下一节点
迭代器=迭代器->下一步;
}
}
它看起来像是
shiftInsert
被设计为在链表的开头插入一个值,然后将第一个节点(以前的)值推送到下一个节点,重复,直到最后一个值被“移位”关闭。我想尝试一下:
void shiftInsert(节点*n,int v){
节点*迭代器=n;
int-tmpPrev=v;
int-tmpCurr=0;
while(迭代器!=NULL){
//保存当前值
tmpCurr=迭代器->值;
//设置新值
迭代器->值=tmpPrev;
//保存旧值
tmpPrev=tmpCurr;
//下一节点
迭代器=迭代器->下一步;
}
}
新建一个
节点
并将其指向1
。新建一个节点
并将其指向1
。那么,v
需要是n->value
的值,所有内容都需要向右移动,最后一个值需要删除。因此,删除n
的最后一个元素并添加v
作为第一个元素,如下所示:1->2->3->4->5
变成88->1->2->3->4
当v
是88
啊,我把它复杂化了。查看编辑后的答案。现在输出是88->1->2->3->4->5->6->7->8->10->NULL
,需要一个错误关闭88->1->2->3->4->5->6->7->8->9->NULL
!请参阅最终更新的答案,以及。嗯,v
需要是n->value
的值,所有内容都需要向右移动,最后一个值需要删除。因此,删除n
的最后一个元素并添加v
作为第一个元素,如下所示:1->2->3->4->5
变成88->1->2->3->4
当v
是88
啊,我把它复杂化了。查看编辑后的答案。现在输出是88->1->2->3->4->5->6->7->8->10->NULL
,需要一个错误关闭88->1->2->3->4->5->6->7->8->9->NULL
!请参阅最终更新答案,以及。