`

链表_

 
阅读更多

链表头文件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_双向链表_

    本文将深入探讨双向链表的概念及其在实际编程中的应用,以标题"04_双向链表_链表_declaredzfw_双向链表_"所提及的源码为例,结合"链表 declaredzfw 双向链表"的标签进行详细讲解。 双向链表(Doubly Linked List)...

    链表_数据结构--链表_

    `1.4链表_用有序的链表模拟一个栈.py`和`1.5链表_用链表模拟一个栈.py`探讨了如何使用链表来实现栈的常用操作,如压栈(添加元素到链表头部)和弹栈(移除链表头部的元素)。栈是一种后进先出(LIFO)的数据结构,...

    链表之VB实现(类).rar_VB 链表_单链表dll vb_链表_链表 vb

    至于"链表_vb"的标签,这仅仅强调了链表是使用VB实现的。 压缩包中的`Form1.frm`文件通常是VB中的窗体文件,可能包含了一个用户界面,用于演示如何与链表交互,如添加、删除节点等操作。`工程1.vbp`是VB项目文件,...

    递增链表_c语言、链表_

    描述中提到的"递增链表_c语言、链表_"暗示我们将讨论如何在C语言中实现一个递增链表。实现递增链表的基本操作包括创建新节点、插入节点、遍历链表以及检查链表是否有序等。以下是一个简单的示例,展示了如何在C语言...

    graph_DFS.zip_C语言单向链表_linux 链表_链表_链表 linux

    在IT领域,特别是软件开发中,数据结构是基础且至关重要的部分,而链表就是其中一种常用的数据结构。本文将详细解析标题为“graph_DFS.zip”中的C语言单向链表在Linux环境下的实现,以及它与链表、图深度优先搜索...

    lianbiao.rar_链表_链表 合并 排序

    总结所述,"lianbiao.rar_链表_链表 合并 排序"的压缩包文件可能包含了关于如何在编程中实现链表、创建、删除节点、合并和排序链表的代码示例或教程。"www.pudn.com.txt"可能是相关的代码文件或文档,而"新建文件夹...

    ds_lab_3_链表_链表操作_数据结构_

    本项目“ds_lab_3_链表_链表操作_数据结构_”着重探讨了链表的基本操作,使用C语言作为实现工具。 链表不同于数组,它不连续存储元素,而是通过节点之间的指针链接来构成。每个节点包含两部分:数据域和指针域。...

    03_循环链表_链表_循环链表_

    循环链表是数据结构中的一种特殊类型,它在链表的基础上增加了一个特性,即链表的最后一个元素指向第一个元素,形成一个闭合的循环。这种结构在处理某些特定问题时非常有用,比如实现循环队列、模拟无限滚动列表等。...

    lrc.rar_linux 链表_linux歌词解析_歌词_链表 歌词解析

    在IT领域,特别是操作系统如Linux的编程中,链表是一种常用的数据结构,它在各种应用场景中发挥着重要作用,比如在本项目"lrc.rar_linux 链表_linux歌词解析_歌词_链表 歌词解析"中,链表被用来解析和显示歌词。...

    JAVA实现链表_双向链表

    JAVA实现链表_双向链表

    sss.rar_sss_双向链表_链表_链表 插入

    **双向链表详解** 双向链表是一种数据结构,与单链表类似,但它在每个节点中不仅包含指向下一个节点的指针,还包含一个指向前一个节点的指针。这使得双向链表在某些操作上比单链表更加灵活,如正向和反向遍历。以下...

    data_sort.rar_VC 链表_链表排序

    本项目"**data_sort.rar_VC 链表_链表排序**"聚焦于如何在VC++中创建单链表,对链表进行基本操作,如输入、搜索、插入元素,并实现链表排序。以下是对这些知识点的详细解释: 1. **链表的概念**: 链表是一种线性...

    List_data_str_packages.rar_linux 封装_linux 链表_链表封装

    "List_data_str_packages.rar_linux 封装_linux 链表_链表封装"这个压缩包文件似乎包含了作者自定义实现的链表封装接口,专为Linux环境设计。 链表不同于数组,它不连续存储数据,而是通过节点之间的指针连接起来。...

    sxlb.rar_C 链表_C 双向链表_stdafx.h_双向链表_链表

    双向链表\qdlist.h 双向链表\stdafx.cpp 双向链表\stdafx.h 双向链表\双向链表.cpp 双向链表\双向链表.ncb 双向链表\双向链表.dsw 双向链表\双向链表.dsp 双向链表\双向链表.opt

    C语言链表_Vc_

    本教程“C语言链表_Vc_”聚焦于C语言中的链表操作,是C爱好者深入理解数据结构和算法的重要资源。 链表与数组不同,它不连续存储数据,而是通过节点间的指针链接数据。每个节点包含两部分:数据域,用于存储实际的...

    dLinkList_双链表_

    在这个“dLinkList_双链表_”的项目中,我们可以通过提供的`main.cpp`、`项目1.dev`和`headfile.h`三个文件了解双链表的实现方式。 首先,`headfile.h`通常是包含双链表结构定义和相关操作的头文件。在这个文件中,...

    用VC编写单链表(数据结构).rar_VC 链表_单链表_数据结构 链表_链表

    对于初学者来说,这是一个很好的起点,因为链表是许多高级数据结构和算法的基础,如双向链表、循环链表、队列和栈等。同时,理解和掌握链表有助于提升编程能力,特别是在处理动态数据集和优化内存使用方面。

    linkedlist_链表_

    总结来说,"linkedlist_链表_"主题深入讲解了链表的基础概念,包括单链表和双链表的创建、节点的添加与删除、链表的逆序操作以及遍历技巧。掌握这些知识对于理解和应用数据结构,尤其是处理动态数据集合,具有重要...

    source_c.zip_linux 链表_嵌入式C面试

    "source_c.zip_linux 链表_嵌入式C面试"这个压缩包文件集合了用于嵌入式C面试的经典程序,主要涉及到了链表操作和各种排序算法。这里我们将深入探讨这两个关键知识点。 首先,链表是一种基础且重要的数据结构,它不...

    shujujiegou.rar_线性链表_链表逆序

    本资料"shujujiegou.rar_线性链表_链表逆序"聚焦于线性链表的查找、删除、逆序和顺序操作,这些都是数据结构课程设计中常见的任务。 1. **线性链表的结构** 线性链表由一系列节点组成,每个节点包含两部分:数据域...

Global site tag (gtag.js) - Google Analytics