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
!请参阅最终更新答案,以及。