主要是涉及到单链表的相关操作
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
typedef struct Node
{
int x;
Node *next;
}Node,*Lnode;
bool Add(int i,int num,Node& node)
{ // 在链表的第i个位置插入元素num
Node *p,*q;
p=new Node;
p->x=num;
q=&node;
int j=0;
while(q && j<i-1)
{
q=q->next;
j++;
}
if(!q || j>i-1)
return false;
p->next=q->next;
q->next=p;
return true;
}
bool Del(Node& node,int num)
{ // 删除里面元素为num的点
Lnode p=&node,q;
int flag=0;
q=p->next;
while(q)
{
if(q->x==num)
{
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(flag)
{
p->next=q->next;
free(q);
return true;
}
return false;
}
void creat(Node& node,int n,int *a)
{
Lnode p=&node,q;
for(int i=n-1;i>=0;i--)
{
q= new Node;
q->next=NULL;
q->x=a[i];
q->next=p->next;
p->next=q;
}
}
void Prin(Node& node)
{
Lnode p=node.next;
for(;p;p=p->next)
cout<<p->x<<endl;
cout<<"end!!!"<<endl;
}
bool Find(Node node,int m)
{
Lnode p=node.next;
for(;p;p=p->next)
{
if(p->x==m)
return true;
}
return false;
}
int main()
{
Node head;
head.next=NULL;
int a[5]={2,4,5,7,0};
creat(head,5,a);
Add(6,1,head);
Add(7,2,head);
Add(8,3,head);
Add(9,4,head);
Add(10,5,head);
Prin(head);
bool a1=Del(head,2);
bool a2=Del(head,2);
bool a3=Del(head,2);
cout<<a1<<" "<<a2<<" "<<a3<<endl;
Prin(head);
bool t1=Find(head,3);
bool t2=Find(head,8);
cout<<t1<<endl<<t2<<endl;
return 0;
}