我想在这个函数的根的开头插入:
struct elem {
int value;
struct elem *next;
};
typedef struct elem Node;
void shiftInsert(Node *n, int v){
int tmp;
while (n != NULL){
n = n->next;
}
}
当Node *n
为:1 -> 2 -> 3 -> 4 -> 5
并致电shiftInsert(88)
Node *n
的输出需要为:
88->1 -> 2 -> 3 -> 4
如何实现这一目标?
看起来shiftInsert
被设计为在链表的开头插入一个值,然后将第一个节点的(前)值推送到下一个节点,重复直到最后一个值被"移位"掉。我会尝试这样的事情:
void shiftInsert(Node *n, int v) {
Node *iterator = n;
int tmpPrev = v;
int tmpCurr = 0;
while(iterator != NULL) {
//save the current value
tmpCurr = iterator->value;
//set the new value
iterator->value = tmpPrev;
//save the old value
tmpPrev = tmpCurr;
//next node
iterator = iterator->next;
}
}
演示