C 移位插入链表



我想在这个函数的根的开头插入:

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;
}
}

演示

相关内容

  • 没有找到相关文章

最新更新