我想问一下
答案是A 我也知道为什么
为何 listNode不设计成
struct listNode
{
struct listNode* prevPtr;
struct listNode* nextPtr;
}
这样当最后一个是 L , 然后要delete L就是
listNode* L = getLastNode(); // L是现在最后一个node
new_L = L->prevPtr; // 将现在的倒数第二个node指定成new_L
delete L; // delete L
L = new_L; // 将 L 指定成倒数第二个node
这样的作法应该A所要作的时间复杂度就不会等比于list的长度了吧?
是这种作法不好? 还是? 有什么原因吗?
※ 引述《einna (Annie)》之铭言:
: http://i.imgur.com/30Wsgfu.png
: 想请问一下为什么答案是C呀?
: 以下的code的概念应该可以实现C的动作,但不需要跑遍整个linked list。
: struct listNode {
: char data;
: struct listNode *nextPtr;
: };
: typedef struct listNode *ListNodePtr;
: void insert(listNode F, listNode L, listNode new_point, int new_value)
: {
: new_point->data = new_value; //指定值给main alloc好,传进来的新指标
: L->nextPtr = new_point; //利用L去把这个新指标加到串行后面。
: L = L->nextPtr; //更新L的位置。
: }
: 还是我有什么地方没有考虑到,希望网友可以告诉我盲点。