#include #include using namespace std; #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; //-------------单链表的存储结构-------------------- typedef struct LNode { ElemType data;//结点的数据域 struct LNode *next;//结点的指针域 } LNode,*LinkList; //-------------单链表的初始化----------------------- Status InitList_L(LinkList &L) { //构造一个空的链表L L=new LNode;//生成新结点作为头结点,用头指针L 指向头结点 L->next=NULL;//头结点的指针域置空 return OK; } //-------------按序号查找---------------------------------- Status GetElem_L(LinkList L,int i,ElemType &e) { //在带头结点的单链表L 中查找第 i 个元素 LinkList p; p=L->next;//初始化,p 指向第一个结点 int j=1;//j 为计数器 while(p&&jnext; ++j; } if(!p||j>i)//第 i 个元素不存在 return ERROR; e=p->data;//取第 i 个元素 return OK; } //------------按值查找--------------------------------------- LNode* LocateElem_L(LinkList L,ElemType e) { //在带头结点的单链表L 中查找值为e 的元素 LNode* p; p=L->next; while(p&&p->data!=e)//寻找满足条件的结点 p=p->next; return p;//返回L 中值为e 的元素的位置;查找失败的话返回NULL } //------------插入------------------------------------------- Status ListInsert_L(LinkList &L,int i,ElemType &e) { LinkList p=L; int j=0; while(p&&jnext; ++j; } if(!p||j>i-1) return ERROR; LinkList s; s=new LNode;//生成新结点s s->data=e;//将结点s 的数据域置为e s->next=p->next;//将结点s 插入L 中 p->next=s; cout<<"插入完成"<next; ++j; } if(!(p->next)||j>i-1) return ERROR;//i 大于表长+1 或小于 1 q=p->next;//临时保存被删结点的地址以备释放 p->next=q->next;//改变删除结点前...