首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

动态链表练习题(单线链表)

2012-11-22 
动态链表练习(单线链表)#include stdafx.h#include iostreamusing namespace stdstruct Data//结构体

动态链表练习(单线链表)

#include "stdafx.h"#include <iostream>using namespace std;struct Data    //结构体定义{int data;Data *next;};int n;int main (  )   //主函数{Data * creat(void )  ;     //声明创建函数    Data * del(Data * ,int );//声明删除函数Data *insert (Data * head,Data * da);//声明插入函数void print (Data *head);//声明输出函数int look(Data *head, int a);   // 声明查找函数Data  * head,*da;int b,m;da=new Data ;head=creat ();   //创建函数print (head);    //输出函数cout <<"please input the data you insert: "<<endl;cin >>da->data;head=insert (head,da);//插入函数print (head);     //输出函数cout <<"please input the data you delete :  "<<endl;cin >>b;head=del(head,b);  //删除函数print (head);     //输出函数cout <<"please input the data you look : "<<endl;cin >>m;look(head,m);  //查找函数return 0;}Data * creat(void )       //定义创建函数                              {Data *p1,*p2,*head;n=0;p1=p2=new Data;cout <<"Please input data: "<<endl;cin>>p1->data;head=NULL;while (p1->data!=0){n++;if (n==1)head=p1;else p2->next=p1;p2=p1;p1=new Data;cout <<"Please input data:"<<endl;cin>>p1->data;}p2->next=NULL;return (head);}void print (Data *head)//定义输出函数{Data *p1;p1=head;if (head==NULL)cout <<"list null"<<endl;else{cout <<endl<<"The datas are : "<<endl;do{cout <<p1->data<<endl;       p1=p1->next;}while (p1!=NULL);    }}int look(Data *head, int a)    //查找函数{Data *p1;int m=0;p1=head;if (head==NULL){cout <<endl<<"List null"<<endl;return 0;}while (p1->next!=0){if (p1->data==a)   m=m+1;p1=p1->next;}cout <<endl<<"There is "<<m<<" data"<< a<<"!!"<<endl;return 0;}Data *insert (Data * head,Data * da)//定义插入函数{Data *p1,*p2; p1=head;  if (head==NULL)  {head=da;      da->next=NULL;       }  else      {while (da->data>p1->data)       {p2=p1;       p1=p1->next;            }        if (da->data<=p1->data ){if (head==p1)head=da;else p2->next=da;    da->next =p1;     }else {p1->next=da;da->next =NULL;}n=n+1;}return head;}Data *del (Data * head,int da)  //定义查找并删除函数{Data *p1,*p2;p1=head;if (head ==NULL)cout <<"List null"<<endl;while (da!=p1->data&&p1->next!=NULL){p2=p1;p1=p1->next;}if(da==p1->data){if (p1==head)  head=p1->next;else p2->next=p1->next;cout <<"delete "<<da<<"!"<<endl;}else cout <<"cannot find"<<da<<"!"<<endl;return head;}

热点排行