`
bliuqing
  • 浏览: 67239 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

C链表相关

阅读更多
#include "stdafx.h"

#include "stdio.h"
#include "stdlib.h"

typedef struct linknode{
	int data;
	struct linknode *next;
}node;
node *create(){
	node *head,*p,*s;
	int x, cycle=1;
	head = (node*)malloc(sizeof(node));
	p = head;
	while(cycle){
		printf("\nplease input the data:");
			scanf("%d",&x);
		if(x != 0){
			s = (node *)malloc(sizeof(node));
			s->data = x;
			printf("\n %d",s->data);
			p->next = s;
			p = s;
		}
		else cycle = 0;
	}
	head = head->next;
	p->next = NULL;
	printf("\n head->data %d",head->data);
	return(head);
}
void print(node *head){
	node *p;
	p = head;
	while(p != NULL){
		printf("\nprint... %d",p->data);
		p = p->next;
	}
}
node *reverse(node *head){
	node *prev, *pcur,*pnext;
	if(head == NULL || head->next ==NULL)
		return head;
	prev = head, pcur = prev->next;//有2个或2个以上才反转
	while(pcur){
		pnext = pcur->next;
		pcur->next = prev;
		prev = pcur;
		pcur = pnext;
	}
	head->next = NULL;
	head = prev;
	return head;
}
node *insert(node *head, int num){
	node *p0,*p1,*p2;
	p1 = head;
	p0 = (node *)malloc(sizeof(node));
	p0->data = num;
	while(p0->data > p1->data &&p1->next != NULL)
	{p2 = p1; p1=p1->next;}
	if(p0->data <= p1->data){//不是在尾部插入
		if(head ==p1){//在头结点前插入
			p0->next = p1;
			head = p0;
		}
		else{//中间插入
			p2->next = p0;
			p0->next = p1;
		}
	}
	else{//在尾部插入
		p1->next = p0;
		p0->next = NULL;
	}
	return head;
}
node *del(node *head,int num){
	node *pcur,*prev;
	pcur = prev = head ;
	while(pcur->data != num && pcur->next != NULL){
		prev = pcur;
		pcur = pcur->next;
	}
	if(pcur->data == num){//找到了合适的值
		if(pcur == head){//要删除的节点是头节点
			head = head->next;
			free(pcur);
			return head;
		}else{
			prev->next = pcur->next;
			free(pcur);
			return head;
		}
	}else{//没找到
		return head;
	}
}

int main(int argc, char* argv[])
{
	node *head;
	head = create();
	print(head);
	head = reverse(head);
	printf("after reverse\n");
	print(head);
	head = insert(head,2);
	print(head);
	head = del(head,2);
	print(head);
	printf("Hello World!\n");
	return 0;
}
分享到:
评论

相关推荐

    C语言链表题目(附答案).docx

    C语言链表题目详解 本资源摘要信息将详细解释C语言链表题目中的知识点,涵盖链表的建立、功能实现、指针、函数、动态结构建立等方面的知识。 一、链表的概念 链表是一种数据结构,它由多个节点组成,每个节点都...

    C语言链表相关面试题.zip

    C语言链表相关的面试题在软件开发领域的面试中是非常常见的,这是因为链表作为一种基本的数据结构,对于理解数据结构、算法以及内存管理等方面有着重要的作用。以下是一些关于C语言链表的面试题及其详细解释。 1. ...

    C语言链表

    C语言链表C语言链表C语言链表C语言链表C语言链表

    C语言链表类题目

    ### C语言链表类题目详解 #### 题目背景 本题目要求使用C语言创建一个包含三名学生数据的单向动态链表,并能够输出这些数据。此题目旨在帮助学习者理解并掌握C语言中链表的基本操作,如创建、插入、遍历等。 #### ...

    C语言链表实现学生信息管理

    ### 题目:C语言链表实现学生信息管理 #### 描述: 这是一个用C语言编写的简单程序,通过链表技术实现了学生信息的管理功能。用户可以通过简单的命令行界面执行各种操作,如添加、删除、修改、查询学生信息以及保存...

    C语言链表操作完整工程

    在这个“C语言链表操作完整工程”中,我们将深入探讨如何在C语言中实现链表的各种操作。 首先,链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(用于指向下一个节点)。创建链表首先要...

    C语言实现多种链表快速排序

    在C语言中实现链表快速排序,首先需要理解链表和快速排序的基本概念。链表不同于数组,它不连续存储数据,而是通过指针连接各个节点。每个节点包含数据元素和指向下一个节点的指针。快速排序的核心是“分区操作”和...

    C语言——链表的归并_c语言链表详解

    标题“C语言——链表的归并_c语言链表详解”和描述“用c语言写链表归并”明确指出了本文的主要内容:使用C语言实现链表的归并操作,并对C语言中的链表进行详细讲解。 #### 代码解析 ##### 1. 结构体定义 ```c ...

    小型通讯录程序c语言链表实现(源代码)

    在本项目中,我们关注的是一个使用C语言实现的小型通讯录程序,它基于链表数据结构。这个程序是在CentOS操作系统环境下,通过vim编辑器编写,并使用gcc编译器进行编译。以下是对该程序及其相关知识点的详细说明: 1...

    c语言链表.ppt

    c语言链表,用来编写c语言程序的。详细情况下了就知道了。

    C语言链表综合练习题

    在解决这些练习题时,你需要熟悉以下C语言链表操作的关键点: 1. 动态内存分配:使用`malloc()`或`calloc()`函数创建新节点。 2. 指针操作:理解和正确使用指针变量,包括赋值、解引用和类型转换。 3. 链表遍历:...

    C语言链表操作函数

    在C语言中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。链表可以动态地增长或缩短,非常适合实现多种数据管理任务。在本篇中,我们将详细探讨如何用C语言进行...

    数据结构C语言链表的实现

    数据结构C语言链表的实现

    C语言链表PPT课件.pptx

    C语言链表PPT课件.pptx 本资源为C语言链表PPT课件,共46页,涵盖了单链表的定义、基本操作、遍历、插入、删除、排序、逆置、约瑟夫问题等知识点。 单链表的定义 单链表是一种线性结构,每个节点由数据字段和指针...

    C语言链表在笔试常考题.docx

    "C语言链表笔试面试常考题总结" 在C语言笔试面试中,链表是一道常考题,以下是两个常见的链表题目及其解决方案。 链表逆置 链表逆置是将链表的节点顺序逆转的过程。例如,原始链表为1-&gt;2-&gt;3-&gt;4-&gt;5,逆置后的链表...

    C语言中关于链表

    C语言中关于链表的总结内容,内附代码例题,详细的有条理的讲解链表内容

    C语言链表学习教案.pptx

    C语言链表学习教案.pptx

    C语言链表源代码

    本资源“C语言链表源代码”提供了一种从MTK(MediaTek,一家著名的芯片制造商)平台分离出来的链表实现,该实现具有独立的内存管理机制,对于理解C语言的链表操作以及自定义内存管理有极大的帮助。 链表是一种动态...

    C语言链表小管理系统

    《C语言链表小管理系统详解》 在编程领域,数据结构是至关重要的组成部分,而链表作为基础且灵活的数据结构之一,在很多实际问题中都有着广泛的应用。本篇将深入探讨基于C语言实现的链表小管理系统,该系统涵盖了...

    C语言链表程序C语言链表程序.doc

    C语言链表程序C语言链表程序

Global site tag (gtag.js) - Google Analytics