首页 > 代码库 > 单链表
单链表
struct Node{ int data; Node *next;};//创建链表 输入为数字,如果输入0 链表结束(0不计)Node *creat(){ Node *head,*p,*s; int x,cycle=1; head=(Node *)malloc(sizeof(Node)); p=head; while (cycle) { cout<<"please input the data:"; cin>>x; if (x!=0) { s=(Node*)malloc(sizeof(Node)); s->data=http://www.mamicode.com/x; p->next=s; p=s; } else { cycle=0; } } head=head->next; p->next=NULL; return head;}
//计算链表的长度int ComputLength(Node * head){ Node *p; int n=0; if (head==NULL) { return 0; } p=head; while(p!=NULL) { n++; p=p->next; } return n;}
//打印链表中的数据void PrintList(Node *head){ Node *p; if (head==NULL) { cout<<"The list has no value!"<<endl; return; } p=head; while (p!=NULL) { cout<<p->data<<endl; p=p->next; }}
//删除数据为num的节点 可能是首节点或者其他节点Node * DeleNode(Node *head,int num){ Node *p1,*p2; p1=head; while (p1->data!=num&&p1->next!=NULL) { p2=p1; p1=p1->next; } if (p1->data=http://www.mamicode.com/=num) { if (p1==head)//删除的是头结点 { head=p1->next; delete p1; } else//删除的是其他节点 { p2->next=p1->next; } } else cout<<"Not find the num !"<<endl; return head;}
//删除链表void DeleList(Node *head){ Node *p; p=head; while (p!=NULL) { Node *temp=p; p=p->next; delete temp; } cout<<"Delete List Success"<<endl;}
//在链表中插入节点 三种情况 头 中 尾Node * InsertNode(Node * head,int num){ Node *pre,*inser,*nex; inser=(Node*)malloc(sizeof(Node)); inser->data=http://www.mamicode.com/num; nex=head; while (nex->data<inser->data&&nex->next!=NULL) { pre=nex; nex=nex->next; } if (inser->data<=nex->data)//判断插入数据在最后一个节点之前(包括最后一个节点) { if (nex==head)//插入头前 { head=inser; inser->next=nex; } else//插入中部 { pre->next=inser; inser->next=nex; } } else//大于最后一个元素 插入尾部 { nex->next=inser; inser->next=NULL; } return head;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。