本文共 1093 字,大约阅读时间需要 3 分钟。
这个问题最初的想法就获得给点节点之前的节点的位置即可,但是这样做再仔细想想貌似意义不是很大,至少从面试的角度感觉到面试官不想从这个角度让面试者去考虑问题,所以这里又有一个投机取巧的办法。
那就是节点中前后节点信息唯一区别的地方就是该节点的data域!!!!!
哈哈,找到这个关键点那么问题就解决了,在给定指针的前提下直接删除后面节点,然后将后面节点的值赋给当前位置,大功告成!
注:。
#includeusing namespace std;typedef struct node{ int data; node *next;}node;node* init(int a[], int n){ node *head, *p; for(int i = 0; i < n; ++i){ node *nd = new node(); nd->data = a[i]; if(i==0){ head = p = nd; continue; } p->next = nd; p = nd; } return head;}bool remove(node *c){ if(c==NULL || c->next==NULL) return false; node *q = c->next; c->data = q->data; c->next = q->next; delete q; return true;}void print(node *head){ while(head){ cout << head->data << " "; head = head->next; } cout << endl;}int main(){ int n = 10; int a[] = { 9, 2, 1, 3, 5, 6, 2, 6, 3, 1 }; node *head = init(a, n); int cc = 3; node *c = head; for(int i=1; i next; print(head); if(remove(c)) print(head); else cout<<"failure"<
转载地址:http://agqii.baihongyu.com/