链表头文件LinkList.h
#include <iostream> #include <ctime> using namespace std; #define ERROR 0 #define OK 1 typedef int ElemType; typedef int Status; typedef struct Node{ ElemType data; struct Node* next; } Node; typedef struct Node* LinkList; void ShowMenu(); void ShowList(LinkList *head); Status CreateWithHead(LinkList *head,int n); Status GetMidNode(LinkList L,ElemType *e);
实现文件LinkList.cpp
#include "LinkList.h" int main(){ int cmd; ElemType e; LinkList head; ShowMenu(); cin>>cmd; while(cmd){ switch(cmd){ case 1: CreateWithHead(&head,11); break; case 2: ShowList(&head); break; case 3: GetMidNode(head,&e); cout<<"\t\t中间节点为:"<<e<<endl; break; case 0:exit(0);break; default: exit(-1); break; } ShowMenu(); cin>>cmd; } return 0; } void ShowMenu(){ char *str="\t\t****************************"; cout<<str<<endl; cout<<"\t\t1.头插法"<<endl; cout<<"\t\t2.显示列表"<<endl; cout<<"\t\t3.获取中点"<<endl; cout<<"\t\t0.退出"<<endl; cout<<str<<endl; } void ShowList(LinkList *head){ int i=0; LinkList p; p=*head; while(p->next){ if(i%5==0){ cout<<endl; cout<<"\t\t"; } cout<<p->data<<" "; p=p->next; i++; } cout<<endl; } Status CreateWithHead(LinkList *head,int n){ LinkList p; int i; srand(time(0)); *head=(LinkList)malloc(sizeof(Node)); (*head)->next=NULL; for(i=0;i<n;i++){ p=(LinkList)malloc(sizeof(Node)); p->data=rand()%100+1; p->next=*head; *head=p; } return OK; } Status GetMidNode(LinkList L,ElemType *e){ LinkList search,mid; search=mid=L; while(search->next!=NULL){ if(search->next->next!=NULL){ search=search->next->next; mid=mid->next; }else{ search=search->next; } } *e=mid->data; return OK; }
相关推荐
本文将深入探讨双向链表的概念及其在实际编程中的应用,以标题"04_双向链表_链表_declaredzfw_双向链表_"所提及的源码为例,结合"链表 declaredzfw 双向链表"的标签进行详细讲解。 双向链表(Doubly Linked List)...
`1.4链表_用有序的链表模拟一个栈.py`和`1.5链表_用链表模拟一个栈.py`探讨了如何使用链表来实现栈的常用操作,如压栈(添加元素到链表头部)和弹栈(移除链表头部的元素)。栈是一种后进先出(LIFO)的数据结构,...
至于"链表_vb"的标签,这仅仅强调了链表是使用VB实现的。 压缩包中的`Form1.frm`文件通常是VB中的窗体文件,可能包含了一个用户界面,用于演示如何与链表交互,如添加、删除节点等操作。`工程1.vbp`是VB项目文件,...
描述中提到的"递增链表_c语言、链表_"暗示我们将讨论如何在C语言中实现一个递增链表。实现递增链表的基本操作包括创建新节点、插入节点、遍历链表以及检查链表是否有序等。以下是一个简单的示例,展示了如何在C语言...
在IT领域,特别是软件开发中,数据结构是基础且至关重要的部分,而链表就是其中一种常用的数据结构。本文将详细解析标题为“graph_DFS.zip”中的C语言单向链表在Linux环境下的实现,以及它与链表、图深度优先搜索...
总结所述,"lianbiao.rar_链表_链表 合并 排序"的压缩包文件可能包含了关于如何在编程中实现链表、创建、删除节点、合并和排序链表的代码示例或教程。"www.pudn.com.txt"可能是相关的代码文件或文档,而"新建文件夹...
本项目“ds_lab_3_链表_链表操作_数据结构_”着重探讨了链表的基本操作,使用C语言作为实现工具。 链表不同于数组,它不连续存储元素,而是通过节点之间的指针链接来构成。每个节点包含两部分:数据域和指针域。...
循环链表是数据结构中的一种特殊类型,它在链表的基础上增加了一个特性,即链表的最后一个元素指向第一个元素,形成一个闭合的循环。这种结构在处理某些特定问题时非常有用,比如实现循环队列、模拟无限滚动列表等。...
在IT领域,特别是操作系统如Linux的编程中,链表是一种常用的数据结构,它在各种应用场景中发挥着重要作用,比如在本项目"lrc.rar_linux 链表_linux歌词解析_歌词_链表 歌词解析"中,链表被用来解析和显示歌词。...
JAVA实现链表_双向链表
**双向链表详解** 双向链表是一种数据结构,与单链表类似,但它在每个节点中不仅包含指向下一个节点的指针,还包含一个指向前一个节点的指针。这使得双向链表在某些操作上比单链表更加灵活,如正向和反向遍历。以下...
本项目"**data_sort.rar_VC 链表_链表排序**"聚焦于如何在VC++中创建单链表,对链表进行基本操作,如输入、搜索、插入元素,并实现链表排序。以下是对这些知识点的详细解释: 1. **链表的概念**: 链表是一种线性...
"List_data_str_packages.rar_linux 封装_linux 链表_链表封装"这个压缩包文件似乎包含了作者自定义实现的链表封装接口,专为Linux环境设计。 链表不同于数组,它不连续存储数据,而是通过节点之间的指针连接起来。...
双向链表\qdlist.h 双向链表\stdafx.cpp 双向链表\stdafx.h 双向链表\双向链表.cpp 双向链表\双向链表.ncb 双向链表\双向链表.dsw 双向链表\双向链表.dsp 双向链表\双向链表.opt
本教程“C语言链表_Vc_”聚焦于C语言中的链表操作,是C爱好者深入理解数据结构和算法的重要资源。 链表与数组不同,它不连续存储数据,而是通过节点间的指针链接数据。每个节点包含两部分:数据域,用于存储实际的...
在这个“dLinkList_双链表_”的项目中,我们可以通过提供的`main.cpp`、`项目1.dev`和`headfile.h`三个文件了解双链表的实现方式。 首先,`headfile.h`通常是包含双链表结构定义和相关操作的头文件。在这个文件中,...
对于初学者来说,这是一个很好的起点,因为链表是许多高级数据结构和算法的基础,如双向链表、循环链表、队列和栈等。同时,理解和掌握链表有助于提升编程能力,特别是在处理动态数据集和优化内存使用方面。
总结来说,"linkedlist_链表_"主题深入讲解了链表的基础概念,包括单链表和双链表的创建、节点的添加与删除、链表的逆序操作以及遍历技巧。掌握这些知识对于理解和应用数据结构,尤其是处理动态数据集合,具有重要...
"source_c.zip_linux 链表_嵌入式C面试"这个压缩包文件集合了用于嵌入式C面试的经典程序,主要涉及到了链表操作和各种排序算法。这里我们将深入探讨这两个关键知识点。 首先,链表是一种基础且重要的数据结构,它不...
本资料"shujujiegou.rar_线性链表_链表逆序"聚焦于线性链表的查找、删除、逆序和顺序操作,这些都是数据结构课程设计中常见的任务。 1. **线性链表的结构** 线性链表由一系列节点组成,每个节点包含两部分:数据域...