动态链表练习(单线链表)
2012-11-12 21:05
239 查看
#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; }
相关文章推荐
- 动态链表练习(单线链表)
- 计算概论(A) / 结构体与链表练习:3:统计学生信息(使用动态链表完成)
- “用最小堆将k个已排序链表合并为一个排序链表”(算法导论 练习6.5-9)
- 链表练习:多项式的加法和乘法
- 【数据结构练习】单向链表实现、链表逆序实现
- 链表(c语言实现)--------------小练习
- 简单链表练习
- 数据结构及算法练习--链表相关
- 【练习】单链表基本操作
- 链表练习
- 【练习笔记】剑指offer-面试题5 :从尾到头打印链表
- list.h链表练习
- 小练习:lintcode466. 链表节点计数
- 数据结构练习——简单单链表
- linux 内核链表练习
- 【c基础练习】c语言实现链表
- 编程练习-反转链表
- 链表练习代码
- 练习使用链表数据结构解决一件小问题
- C语言链表练习