#includeusing 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 "< >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."< data<<" "; //当链表不为空,输出链表数据 p=p->next; // 跳指针 } cout < 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;jnext ; 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 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 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)< 创新互联公司是专业的寿光网站建设公司,寿光接单;提供网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行寿光网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
附件:http://down.51cto.com/data/2368719
本文名称:数据结构-链表的操作
链接URL:http://cdxtjz.cn/article/ghhgoi.html