64,654
社区成员
发帖
与我相关
我的任务
分享
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
ListNode *removeElements(ListNode *head, int val) {
// Write your code here
ListNode dummy;
dummy.next = head;
head = &dummy;
while (head->next != NULL) {
if (head->next->val == val) {
head->next = head->next->next;
} else {
head = head->next;
}
}
return dummy.next;
}
};
#include<iostream>
using namespace std;
class Node{
public:
Node(int d):data(d),next(NULL){}
int data;
Node* next;
};
//NODE为节点定义
class LinkList{
public:
LinkList()
{
Head=NULL;
}
void init(Node *p)
{
Head=p;
}
void insert(Node*);//插入数据
void traverse(void(*visit)(Node*));//遍历链表,并显示出相应的值
Node *removeElements(Node *, int);//删除的主要程序
void destroy();//销毁链表
private:
Node* Head;
};//LINKLIST
//LinkList为链表定义
void LinkList::insert(Node *p)
{
//...
}//INSERT
void LinkList::destroy()
{
//...
}
void LinkList::traverse(void(*visit)(Node*))
{
//...
}
void printData(Node *p)
{
//...
}
Node* LinkList::removeElements(Node *head, int val) {
Node dummy;
dummy.next = head;
head = &dummy;
while (head->next != NULL) {
if (head->next->data == val) {
head->next = head->next->next;
} else {
head = head->next;
}
}
return dummy.next;
}
void main()
{
LinkList H;
Node *p;
cout<<"输入数字,只要换行就认为结束"<<endl;
while(1)
{
//输入数字
}
cout<<"输入一个数字"<<endl;
int intin;
cin>>intin;
H.removeElements(p,intin);
H.traverse(printData);//遍历,并在屏幕中显示结果
H.destroy();//销毁链表
cout<<endl;
system("pause");
//return 0;
}
#include<iostream>
using namespace std;
class Node{
public:
Node(int d):data(d),next(NULL){}
int data;
Node* next;
};
//NODE为节点定义
class LinkList{
public:
LinkList()
{
Head=NULL;
}
void init(Node *p)
{
Head=p;
}
void insert(Node*);//插入数据
void traverse(void(*visit)(Node*));//遍历链表,并显示出相应的值
Node *removeElements(Node *, int);//lintcode里的一段程序
void destroy();//销毁链表
private:
Node* Head;
};//LINKLIST
//LinkList为链表定义
void LinkList::insert(Node *p)
{
p->next=Head;
Head=p;
}//INSERT
//将新节点p插入原链表
void LinkList::destroy()
{
Node* p;
Node* q;
for(p=Head;p;)
{
q=p->next;
delete p;
p=q;
}
Head=NULL;
}
void LinkList::traverse(void(*visit)(Node*))
{
Node* p;
for(p=Head;p;p=p->next)
visit(p);
}
void printData(Node *p)
{
cout<<p->data<<" ";
}//PRINTDATA
Node* LinkList::removeElements(Node *head, int val) {
Node dummy;
dummy.next = head;
head = &dummy;
while (head->next != NULL) {
if (head->next->data == val) {
head->next = head->next->next;
} else {
head = head->next;
}
}
return dummy.next;
}
void main()
{
LinkList H;
Node *p;
cout<<"输入数字,只要换行就认为结束"<<endl;
while(1)
{
int i;
cin>>i;
p=new Node(i);
H.insert(p);
cout<<"p的地址为"<<p<<endl;
cout<<"p->data的为"<<p->data<<endl;
cout<<endl;
if(cin.get()=='\n')
break;
}
cout<<"输入一个数字"<<endl;
int intin;
cin>>intin;
H.removeElements(p,intin);
H.traverse(printData);//遍历
H.destroy();
cout<<endl;
system("pause");
//return 0;
}
ListNode() : val(), next(NULL) {}
如果有帮助,请采纳答案好吗,谢谢!