您的位置:首页 > Web前端 > Node.js

1007. remove for single link list with head node

2016-10-20 10:44 253 查看


带虚拟头结点的单链表结点结构如下:

struct ListNode

{

int data;

ListNode *next;

};

链表类接口如下:

class List

{

public:

List()

{

head = new ListNode;

head->next = NULL;

}

~List()
{
ListNode* curNode;
while( head->next )
{
curNode = head->next;
head->next = curNode->next;
delete curNode;
}
delete head;
}

//在链表第pos(pos>0)个结点之前插入新结点,新结点值为toadd
//链表实际结点从1开始计数。
//调用时需保证pos小等于链表实际结点数
void insert(int toadd, int pos)

//删除链表的第pos(pos>0)个结点
//链表实际结点从1开始计数。
//调用时需保证pos小等于链表实际结点数
void remove(int pos);

// Data field
ListNode *head; //head指向虚拟头结点,head-next指向第一个实际结点


};

请实现如下函数:

void List::remove(int pos)

只提交remove函数实现,不要提交类定义及main函数。

Problem Source: 平时测验1

我的代码

// Problem#: 19147
// Submission#: 4809302
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/ // All Copyright reserved by Informatic Lab of Sun Yat-sen University
void List::insert(int toadd, int pos) {
ListNode *pre = head;
if (pos <= 0) return;
while (--pos && pre->next != NULL) {
pre = pre->next;
}
ListNode * add = new ListNode;
add->data = toadd;
if (pre->next != NULL) {
add->next = pre->next;
} else {
add->next = NULL;
}
pre->next = add;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: