#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; }
发表评论
-
gcc gdb常用命令
2010-10-06 11:20 1131gdb 链接: http://fanqiang.chinau ... -
指针数组,数组指针
2010-10-02 14:40 735void test(char* a[]) { ... -
如何用栈实现递归与非递归的转换
2010-04-10 15:18 950http://bbs.chinaunix.net/viewth ... -
华为笔试2
2009-06-16 09:37 985【转】http://hi.baidu.com/xiao1dia ... -
华为笔试1
2009-06-16 09:35 1022【转】http://hi.baidu.com/xi ... -
用两个栈实现一个队列的功能
2009-06-03 15:22 2585【转】http://hi.baidu.com/liangjw8 ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:41 1069【转】http://blog.csdn.net/s ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:39 1517【转】http://blog.csdn.net/seraphs ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:38 885【转】http://blog.csdn.net/s ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:37 885【转】http://blog.csdn.net/s ... -
c预编译 #define相关
2009-05-29 15:14 1197#是生成字符串: #define a(x) ... -
排序算法和二分查找
2009-05-17 15:50 832using namespace std; #includ ... -
C移位
2009-05-15 09:56 1371【转】 C提供了六种位运算运算符;这些运算符可能只允许整型操作 ... -
sizeof union struct 内存对齐
2009-05-14 20:30 2547【转】http://www.programfan.com/bl ... -
求100的阶乘
2009-05-06 16:32 1559#include <stdio.h> int m ... -
字符串操作
2009-05-03 15:19 822#include "stdafx.h" ... -
C字符串反转
2009-05-03 10:53 1804更改下面程序 #include string.h ... -
C题库连接
2009-04-29 09:28 763http://blog.chinaunix.net/u2/64 ...
相关推荐
C语言链表题目详解 本资源摘要信息将详细解释C语言链表题目中的知识点,涵盖链表的建立、功能实现、指针、函数、动态结构建立等方面的知识。 一、链表的概念 链表是一种数据结构,它由多个节点组成,每个节点都...
C语言链表相关的面试题在软件开发领域的面试中是非常常见的,这是因为链表作为一种基本的数据结构,对于理解数据结构、算法以及内存管理等方面有着重要的作用。以下是一些关于C语言链表的面试题及其详细解释。 1. ...
C语言链表C语言链表C语言链表C语言链表C语言链表
### C语言链表类题目详解 #### 题目背景 本题目要求使用C语言创建一个包含三名学生数据的单向动态链表,并能够输出这些数据。此题目旨在帮助学习者理解并掌握C语言中链表的基本操作,如创建、插入、遍历等。 #### ...
### 题目:C语言链表实现学生信息管理 #### 描述: 这是一个用C语言编写的简单程序,通过链表技术实现了学生信息的管理功能。用户可以通过简单的命令行界面执行各种操作,如添加、删除、修改、查询学生信息以及保存...
在这个“C语言链表操作完整工程”中,我们将深入探讨如何在C语言中实现链表的各种操作。 首先,链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(用于指向下一个节点)。创建链表首先要...
在C语言中实现链表快速排序,首先需要理解链表和快速排序的基本概念。链表不同于数组,它不连续存储数据,而是通过指针连接各个节点。每个节点包含数据元素和指向下一个节点的指针。快速排序的核心是“分区操作”和...
标题“C语言——链表的归并_c语言链表详解”和描述“用c语言写链表归并”明确指出了本文的主要内容:使用C语言实现链表的归并操作,并对C语言中的链表进行详细讲解。 #### 代码解析 ##### 1. 结构体定义 ```c ...
在本项目中,我们关注的是一个使用C语言实现的小型通讯录程序,它基于链表数据结构。这个程序是在CentOS操作系统环境下,通过vim编辑器编写,并使用gcc编译器进行编译。以下是对该程序及其相关知识点的详细说明: 1...
c语言链表,用来编写c语言程序的。详细情况下了就知道了。
在解决这些练习题时,你需要熟悉以下C语言链表操作的关键点: 1. 动态内存分配:使用`malloc()`或`calloc()`函数创建新节点。 2. 指针操作:理解和正确使用指针变量,包括赋值、解引用和类型转换。 3. 链表遍历:...
在C语言中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。链表可以动态地增长或缩短,非常适合实现多种数据管理任务。在本篇中,我们将详细探讨如何用C语言进行...
数据结构C语言链表的实现
C语言链表PPT课件.pptx 本资源为C语言链表PPT课件,共46页,涵盖了单链表的定义、基本操作、遍历、插入、删除、排序、逆置、约瑟夫问题等知识点。 单链表的定义 单链表是一种线性结构,每个节点由数据字段和指针...
"C语言链表笔试面试常考题总结" 在C语言笔试面试中,链表是一道常考题,以下是两个常见的链表题目及其解决方案。 链表逆置 链表逆置是将链表的节点顺序逆转的过程。例如,原始链表为1->2->3->4->5,逆置后的链表...
C语言中关于链表的总结内容,内附代码例题,详细的有条理的讲解链表内容
C语言链表学习教案.pptx
本资源“C语言链表源代码”提供了一种从MTK(MediaTek,一家著名的芯片制造商)平台分离出来的链表实现,该实现具有独立的内存管理机制,对于理解C语言的链表操作以及自定义内存管理有极大的帮助。 链表是一种动态...
《C语言链表小管理系统详解》 在编程领域,数据结构是至关重要的组成部分,而链表作为基础且灵活的数据结构之一,在很多实际问题中都有着广泛的应用。本篇将深入探讨基于C语言实现的链表小管理系统,该系统涵盖了...
C语言链表程序C语言链表程序