#include<iostream> using namespace std; #define OK 1; #define ERROR 0; typedef int ElemType; typedef int Status; typedef struct LNode //定义链表结构体 { ElemType data; struct LNode *next; }LNode, *LinkList; Status CreateList_L(LinkList &L,int n) //创建链表并输入数据 { int i; LinkList p,q; //p q :过度指针 L=new LNode; //新申请的结点 L->next=NULL; //生成头指针 q=L; cout<<"please input "<<n<< " numbers"; for(i=1;i<=n;i++) { p=new LNode; //申请新的结点 cin>>p->data; q->next=p; // 链表链接 q=q->next; // 跳指针 } q->next=NULL; //生成尾指针 return OK; } Status Outptlist_L(LinkList L) //输出链表 { LinkList p; p=L->next; //指向首结点 if(p==NULL) //当链表尾空 指示返回空链表 { cout<<"This list is empyt."<<endl; } while (p!=NULL) { cout<<p->data<<" "; //当链表不为空,输出链表数据 p=p->next; // 跳指针 } cout <<endl; return OK; } int Listlength_(LinkList L) //求链表长度 { LinkList p; int n=0; p=L->next; //p指向首结点 while (p!=NULL) { n++; p=p->next; } return n; } Status GetElem_L(LinkList L,int i,ElemType &e) //将链表L中第i个元素用e返回 { LinkList p; int j; if (i<1||i> Listlength_(L)) //判断选择的合理性 return ERROR; p=L->next; for (j=1;j<i;j++) //for 循环寻找第i个元素 p=p->next ; e=p->data; //用e返回 return OK; } Status ListInsert_L(LinkList&L,int i,ElemType e) // 在链表第i个位置插入e { LinkList p,S; int j; if (i<1||i> Listlength_(L)+1) //判断选择的合理性 return ERROR; if (i==1) p=L; //当在第一个元素插入时p指向头指针 else p=L->next; //否则指向首结点 for(j=1;j<i-1;j++) p=p->next; S=new LNode; //申请新的结点 S->data=e; //将e赋给新的结点 S->next=p->next; //将新结点与前一个结点的next链接 p->next=S; //将前一个结点与新节点链接 return OK; } Status ListDelete_L(LinkList&L,int i,ElemType &e) //删除链表L的第i个元素,并用e返回 { LinkList p,q; int j; if (i<1||i> Listlength_(L)) //判断选择的合理性 return ERROR; p=L->next; for(j=1;j<i-1;j++) //找到第i个元素 p=p->next; q =p->next; // q指向p的next e=q->data; // 取q的数据 p->next=q->next; //将p的next与q的next链接 free(q); //释放指针 return OK; } void main () { int n,m,k; LinkList L1; cout <<"please input a umber: "; cin>> m; CreateList_L(L1,m); cout<<"输出列表:"; Outptlist_L( L1); cout<<"The length is "<< Listlength_(L1)<<endl; GetElem_L( L1,3,n); cout<<"The number is "<<n<<endl; ListInsert_L(L1,6, 0); cout<<"The Insertlist is : "; Outptlist_L( L1); ListDelete_L(L1,3,k); cout<<"The Deletelist is : "; Outptlist_L( L1); cout<<"The Delete number is "<<k<<endl; }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。