找一段数字做删除和添加链表的伪代码和c++程序 谢谢了

2024-11-26 02:46:02
推荐回答(1个)
回答1:

懒得自己打,给你找到这个,你用后一半即可,自己改改就行了:1、建立一个单链表,并从屏幕显示单链表元素列表。2、从键盘输入一个数,查找在以上创建的单链表中是否存在该数;如果存在,显示它的位置;如果不存在,给出相应提示。3、在上述的单链表中的指定位置插入指定的元素4、删除上述单链表中指定位置的元素。源程序:头文件#include#includetypedefcharElemType;typedefintStatus;#defineOK1#defineERROR0typedefstructLNode{ElemTypedata;LNode*next;}LNode,*LinkList;voidabout(){//版本信息coutnext;//从头结点开始扫描while(p){//顺指针向后扫描,直到p->next为NULL或i=j为止coutnext;}coutnext=NULL;//先建立一个带头结点的单链表cout0;--i){p=newLNode;cin>>p->data;//输入元素值p->next=L->next;L->next=p;//插入}}//L是带头结点的链表的头指针,以e返回第i个元素StatusGetElem_L(LinkListL,inti,ElemType&e){intj;LinkListp;p=L->next;j=1;//p指向第一个结点,j为计数器while(p&&jnext;++j;}//顺指针向后查找,直到p指向第i个元素或p为空if(!p||j>i)returnERROR;//第i个元素不存在e=p->data;//取得第i个元素returnOK;}//本算法在链表中第i个结点之前插入新的元素eStatusListInsert_L(LinkListL,inti,ElemTypee){intj;LinkListp,s;p=L;j=0;while(p&&jnext;++j;}//寻找第i-1个结点if(!p||j>i-1)returnERROR;//i大于表长或者小于1s=newLNode;//生成新结点if(s==NULL)returnERROR;s->data=e;s->next=p->next;p->next=s;//插入returnOK;}StatusListDelete_L(LinkListL,inti,ElemType&e){LinkListp,q;intj;p=L;j=0;while(p->next&&jnext;++j;}//寻找第i个结点,并令p指向其前趋if(!(p->next)||j>i-1)returnERROR;//删除位置不合理q=p->next;p->next=q->next;//删除并释放结点e=q->data;free(q);returnOK;}#include"LinkList.h"voidmain(){LinkListL;intn,choice,i;ElemTypee;about();cout>n;CreateList_L(L,n);showmenu();//功能列表cin>>choice;while(choice!=5){//输入时候退出程序switch(choice){case1:PrintList(L);break;//1.查看输入的全部数据case2:{cout>i;GetElem_L(L,i,e);cout>i;cout>e;ListInsert_L(L,i,e);break;}//3.链表插入元素case4:{cout>i;ListDelete_L(L,i,e);break;}//4.链表删除元素default:cout>choice;}}