主要是涉及到单链表的相关操作
#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; }