#includeiostream.htypedefintelemtype;typedefstructnode{elemtypedata;structnode*next;}LNode,*LinkList;voidInitList(LinkList&L){L=newLNode;L-next=NULL;}voidCreateList(LinkList&L){intn;cout请输入结点的个数:;cinn;for(inti=1;i=n;i++){LinkListP;P=newLNode;cinP-data;P-next=L-next;L-next=P;}}voidCreateList_H(LinkList&L){intn;cout请输入结点的个数:;cinn;LinkListr=L;for(inti=1;i=n;i++){LinkListP;P=newLNode;cinP-data;r-next=P;r=P;}r-next=NULL;}voidOutList(LinkListL){LinkListP;cout\n输出单链表为:;P=L-next;while(P!=NULL){coutP-data'\t';P=P-next;}}LinkListgetelem(LinkListL,inti){LinkListP=L-next;intj=1;while(P&&ji){P=P-next;j++;}if(j==i)returnP;elsereturnNULL;}LinkListLocateelem(LinkListL,elemtypee){LinkListP=L-next;while(P&&P-data!=e)P=P-next;returnP;}voidInsertList(LinkListL,inti,elemtypex){LinkListP;P=getelem(L,i);if(P!=NULL){LinkListS;S=newLNode;S-data=x;S-next=P-next;P-next=S;}}voidDeleteList(LinkList&L,inti){LinkListP,q;P=getelem(L,i-1);if(P-next!=NULL){q=P-next;P-next=q-next;delete(q);}}voidmain(){cout\n\t\t1:单链表建立(头插法)\n;cout\n\t\t2:单链表建立(尾插法)\n;cout\n\t\t3:单链表输出\n;cout\n\t\t4:单链表查找(按结点找)\n;cout\n\t\t5:单链表查找(按元素找)\n;cout\n\t\t6:单链表插入\n;cout\n\t\t7:单链表删除\n;cout\n\t\t0:退出程序;LinkListL;InitList(L);cout\n\t\t请选择功能:\n;intflag=1;while(flag){intchoice;cinchoice;switch(choice){case1:CreateList(L);break;case2:CreateList_H(L);break;case3:OutList(L);break;case4:cout\n请输入查找的结点:;inti;LinkListP;cini;P=getelem(L,i);if(P)cout\n找到第i个结点元素为:P-data;elsecout\n没有找到该结点;break;case5:cout\n请输入查找的元素:;elemtypee;cine;P=Locateelem(L,e);if(P)cout\n元素e所在结点地址为:P;elsecout\n没有找到该元素;break;case6:cout\n请输入插入的位置和元素:;elemtypex;cinix;InsertList(L,i,x);break;case7:cout\n请输入删除的位置:;cini;DeleteList(L,i);break;case0:flag=0;}}}