`
smallearth
  • 浏览: 37517 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

动态链表

 
阅读更多
// 动态链表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 语言动态链表的建立 C 语言动态链表的建立是计算机编程中的一种常见技术,用于存储和管理大规模数据。动态链表是一种动态分配内存的数据结构,能够根据实际情况自动调整存储空间。下面是一个使用 C 语言编写的...

    动态链表的建立及排序

    动态链表是一种在计算机科学中常见的数据结构,它与数组不同,不连续存储元素,而是通过每个节点包含指向下一个节点的指针来链接元素。在本主题中,我们将深入探讨如何建立动态链表以及如何在输入一系列正整数时对其...

    统计学生信息(使用动态链表完成)

    ### 统计学生信息(使用动态链表完成) #### 知识点概述 本文将详细介绍如何使用C语言中的动态链表来实现对学生信息的管理。动态链表是一种数据结构,可以方便地添加或删除节点,非常适合用于处理不确定数量的数据...

    动态链表的汇编语言实现

    动态链表是数据结构中的重要概念,它是一种线性数据结构,其中的元素不按顺序存储,而是通过指针连接。在高级编程语言中,动态链表的创建和操作相对简单,但在汇编语言中实现则需要深入理解内存管理和指针操作。下面...

    学生信息管理系统-动态链表练习

    《学生信息管理系统——动态链表实现详解》 在计算机科学领域,数据结构是支撑软件功能实现的重要基石。其中,动态链表作为一种常见的线性数据结构,具有灵活的内存管理和便捷的操作特性,常被用于实现各种复杂的...

    动态链表的建立

    动态链表是计算机科学中数据结构的一种,它与数组不同,不依赖于预先分配的连续内存空间。在链表中,每个元素称为节点,每个节点包含数据和指向下一个节点的指针。动态链表尤其强调在运行时根据需要创建、删除和修改...

    大数计算器_动态链表.zip_c++计算器 链表_大数计算器_大数计算器;动态链表

    在本文中,我们将深入探讨如何使用C++编程语言来实现一个大数计算器,特别是通过动态链表来处理大数的四则运算。动态链表是一种数据结构,它允许我们在运行时根据需要添加或删除节点,这使得它们非常适合处理不确定...

    java实现的动态链表

    动态链表是一种常见的数据结构,尤其在编程语言如Java中被广泛使用。动态链表与静态数组不同,它允许在运行时动态地添加或删除元素,而无需预先确定其大小。下面我们将深入探讨Java中如何实现动态链表及其相关知识点...

    静态链表和动态链表详细讲解教程

    静态链表和动态链表详细讲解教程 本资源讲解了链表的基本概念和实现方式,着重介绍了静态链表和动态链表的区别和应用场景。链表是一种常见的数据结构,它由多个节点组成,每个节点都包含一个数据域和一个指向下一个...

    C语言写函数建立一个有三名学生数据的单项动态链表

    ### C语言实现单项动态链表知识点详解 #### 一、单项动态链表基本概念 在计算机科学中,链表是一种常见的线性数据结构,它不像数组那样存储在连续的内存空间中,而是由一系列节点组成,每个节点包含数据元素及指向...

    约瑟夫环 动态链表 处理

    ### 约瑟夫环与动态链表处理 #### 知识点一:约瑟夫环问题 约瑟夫环(Josephus problem)是一个著名的理论问题,在计算机科学领域有着广泛的应用,尤其是在数据结构和算法的设计中。问题描述如下: 假设有一群人...

    顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。.docx

    本文档是关于一元多项式加法、减法和乘法实现的课程设计报告,主要关注在顺序结构和动态链表结构下的实现方法。设计目标是加深对数据结构的理解,尤其是如何选择合适的数据结构来解决问题,并能编写相关算法。设计...

    动态链表的学习实例(源自谭浩强的书中,自己在VC6上实验)

    动态链表是计算机科学中数据结构的一个重要概念,它是一种线性数据结构,与数组不同,动态链表的元素在内存中不是连续存放的。在动态链表中,每个元素称为节点,每个节点包含两部分:数据域和指针域。数据域用于存储...

    动态链表的建立、删除、插入完整程序

    在这个C语言程序中,我们创建了一个动态链表的数据结构,并实现了动态链表的建立、删除和插入操作。这些是链表操作的基础,对于理解和掌握数据结构至关重要。 首先,链表是一种线性数据结构,其中元素(节点)不...

    构建动态链表

    动态链表是编程中一种非常基础且重要的数据结构,它在C语言中有着广泛的应用。动态链表不同于静态数组,因为它在内存中不是预先分配固定大小的空间,而是根据需要动态地进行分配和释放。这种特性使得链表在处理不...

    动态链表(c语言程序)

    动态链表是数据结构中的一种,它在计算机科学中扮演着重要的角色,特别是在C语言编程中。相比于静态数组,动态链表提供了更大的灵活性,因为它们可以在运行时动态地增加或减少元素数量。在这个程序中,我们将探讨...

    顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。

    根据给定文件的信息,我们可以总结出以下关于一元多项式在顺序结构与动态链表结构下的加法、减法及乘法实现的关键知识点。 ### 一、基础概念 #### 1.1 一元多项式定义 一元多项式是由一系列项组成的数学表达式,...

    C++实现动态链表的建立、输出、插入和删除功能。

    "C++实现动态链表的建立、输出、插入和删除功能" 本文将详细讨论C++实现动态链表的建立、输出、插入和删除功能的知识点。 链表的建立 链表是一种数据结构,它由一系列结点组成,每个结点都包含指向下一个结点的...

    C++数据结构动态链表实现

    建议精炼实现动态链表 数据结构课程设计 欢迎交流

    C语言程序动态链表

    C语言动态链表简单操作,创建链表,改动数据,插入删除数据。

Global site tag (gtag.js) - Google Analytics