// 动态链表0.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define NULL 0
#include<iostream>
using namespace std;
struct work
{
int num;
float pay;
char sex;
work *next;
};
int n;
int main()
{
work *creat(void);
void *print (work * );
work *reserch(work *,int);
work *insert(work *,work *);
work *del(work *,int);
work *putout(work *, int);
work *head, *wage;
int reserchsum,del_num,a;
cout<<"开始建表,依次输入要num pay sex ,以0 0 0结束。"<<endl;
head=creat();
cout<<"输出所建链表"<<endl;
print (head);
cout<<"输入要查找的节点"<<endl;
cin>>reserchsum;
reserch(head,reserchsum);
cout<<"输入要插入的节点:"<<endl;
wage=new work;
cin>>wage->num >>wage->pay>>wage->sex ;
while(wage->num!=0)
{
head= insert(head,wage);
print(head);
cout<<"输入要插入的节点,以0 0 0结束。"<<endl;
wage=new work;
cin>>wage->num >>wage->pay>>wage->sex ;
}
cout<<"请输入要删除的节点"<<endl;
cin>>del_num;
head=del(head,del_num);
print(head);
do
{
cout<<"输入要输出的节点"<<endl;
cin>>a;
putout(head,a);
head=head->next;
}while(a!=0);
return 0;
}
work *creat( ) //建表
{ work *head;
work *p1,*p2;
n=0;
p1=p2=new work;
cin>>p1->num>>p1->pay>>p1->sex;
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new work;
cin>>p1->num>>p1->pay>>p1->sex;
}
p2->next=NULL;
return(head);}
void *print (work *head)//输出
{work *p1;
p1=head;
do
{cout<<p1->num<<" "<<p1->pay<<" "<<p1->sex<<endl;
p1=p1->next;}
while(p1!=NULL);
return 0;
}
work *reserch( work *head,int reserchnum)//查找
{work *p1;
p1=head;
while(reserchnum!=p1->num )
{
p1=p1->next ;
}
if(reserchnum==p1->num)
{
cout<<p1->num<<" "<<p1->pay<<" "<<p1->sex<<endl;
}
else
{
cout<<"can't find"<<endl;
}
return (head);}
work *insert(work *head ,work *wage )//插入
{
work *p1,*p2,*p0;
p0=wage;
p1=head;
while ((p0->num>p1->num)&&(p1->next!=NULL) )
{p2=p1;
p1=p1->next;}
if(p0->num<=p1->num)
{ if(head==p1)
head=p0;
else;
p2->next=p0;
p0->next=p1;
}
else
{p1->next=p0;p0->next =NULL;}
n=n+1;
return(head);
}
work *del(work *head,int del_num)//删除
{
work *p1,*p2;
p1=head;
while(del_num!=p1->num&&p1->next!=NULL)
{ p2=p1;p1=p1->next ;
}
if(del_num==p1->num )
{if(del_num==head->num )
head=p1->next ;
else
p2->next=p1->next ;
cout<<"delete"<<del_num<<endl;
n=n-1;
}
else
cout<<"can't find"<<endl;
return (head);}
work *putout(work* head,int a)//遍历
{
work *p;
p=head;
while(p->next!=0)
{
if(p->num==a)
{ cout<<p->num<<p->pay<<p->sex<<endl;break; }
else
{cout<<" can't find."<<endl;break;}
}
return head;
}
分享到:
相关推荐
动态链表的建立程序,用C语言编写,供技术与编程人员参考
统计学生信息(使用动态链表完成),c语言程序设计,适合初学者学习
采用汇编语言实现动态链表,自己管理内存,实现malloc函数
使用C++语言,使用动态链表实现大数之间四则运算
动态链表的建立,以及对建立的动态链表其简单的调试。
本程序是我们老师要求我们作为CAD软件系统的基础练习,主要目的是联系动态链表以及与之相关的一些操作,如添加,查找,删除
java实现的动态链表!很简单的东西,没有完全的链表功能
约瑟夫环 动态链表 处理 C
建议精炼实现动态链表 数据结构课程设计 欢迎交流
C语言动态链表简单操作,创建链表,改动数据,插入删除数据。
在C++中,如何创建动态链表,以及动态链表的删除及插入等操作,仅供能考。
//编写一个C程序,功能是: //能接收用户从键盘输入一串正整数,然后建立动态链表; //(注:用户的输入用"-1"表示结束;) //运行示例如下: //请输入: 1 2 3 4 5 6 7 8 9 -1 //结果是: 1->2->3->4->5->6->7->8->9->NULL
动态内存的分配,在输入一系列正整数的同时对输入的书进行排序。
这个程序是用c语言建立的一个动态链表,可以实现立动态链表的建、删除、插入在一起的完整的程序,对于初学c语言的同学应该有所帮助。
把谭浩强书里的的动态链表部分用VC6验证了一下,希望参学习链表的同仁有帮助。
顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现
有关c语言的动态链表的创建 有兴趣的可以看看啊
实现动态链表的建立、输出、插入和删除功能。
里面给小白打了N多的注释,可以运行通过的源码,用VC++6.0,C++语言编写的 功能分离,主函数,新建链表函数 ,输出链表函数 ,删除节点函数 ,插入节点函数 ,这几个部分组成。
创建动态链表,动态创建数据库信息,动态分配数据内存空间