大作业水平...
#include<stdio.h>
#include<stdlib.h>
struct node{
struct node* next;
int c;
};
struct node* init_node(int input)
{
struct node* p;
p = malloc(sizeof(struct node));
p->c = input;
return p;
}
void insert_node(struct node *head, int new)
{
struct node *temp = (struct node*)(malloc(sizeof(struct node)));
// struct node *temp;
while(head->next != NULL)
head = head->next;
head->next = temp;
temp->c = new;
temp->next = NULL;
}
void display_list(struct node* head){
if(head == NULL)
{
printf("error.\n");
return;
}
struct node *p = head;
while(p->next != NULL)
{
printf("%d ",p->c);
p = p->next;
}
printf("%d ", p->c);
printf("NULL\n");
}
void destroy_list(struct node *head)
{
if (NULL != head) {
destroy_list(head->next);
// free(head->c);
free(head);
printf("destroy a list...\n");
}
}
struct node* copy_list(struct node* head)
{
struct node* p = (struct node*)(malloc(sizeof(struct node)));
p->next = NULL;
if(head == NULL)
{
printf("head is NULL.\n");
return;
}
p->c = head->c;
head = head->next;
while(head != NULL)
{
printf("copying... head->c: %d\n", head->c);
insert_node(p, head->c);
head = head->next;
}
// insert_node(p, head->c);
return p;
}
struct node* reverse_list(struct node* head)
{
struct node* p;
struct node* t;
p = (struct node*)(malloc(sizeof(struct node)));
p->c = head->c;
p->next = NULL;
while(head->next != NULL)
{
head = head->next;
t = p;
p = (struct node*)(malloc(sizeof(struct node)));
p->next = t;
p->c = head->c;
}
return p;
}
int main(int argc, char** argv)
{
struct node *head = init_node(1);
long long i;
insert_node(head, 2);
insert_node(head, 3);
insert_node(head, 4);
insert_node(head, 5);
insert_node(head, 6);
insert_node(head, 7);
display_list(head);
struct node* copy = copy_list(head);
printf("copy done.\n");
struct node* reve = reverse_list(head);
display_list(reve);
for (i = 0; i < 0x1000000; i++) reve = reverse_list(head);
display_list(reve);
display_list(copy);
destroy_list(head);
destroy_list(copy);
return 0;
}
分享到:
相关推荐
选择合适的存储方式实现线性表。其中,必须实现的线性表基本操作为:InitList、 ClearList、ListEmpty、ListLength、GetElem、PriorElem、ListInsert、ListDelete这8个基本操作,其余的可以选作。
在本项目中,"C语言实现链表通讯录"是一个典型的C语言编程任务,它结合了数据结构(链表)和数据库(MySQL)的应用。这个课程设计的目标是创建一个能够与MySQL数据库交互的C语言程序,以管理联系人信息。下面我们将...
链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态...以上是对"链表(C语言实现)"主题的详细阐述,涵盖了链表的基本概念、文件功能、操作流程、局限性以及C语言实现链表的关键点。
在本主题中,我们将深入探讨如何使用C语言实现链表的基本操作,包括创建、插入、查找、删除和遍历。 1. **链表创建**: 创建链表首先需要定义一个结构体类型来表示链表的节点,通常包含数据部分和指向下一个节点的...
以上就是C语言实现链表操作的基础。这些操作可以用于构建更复杂的数据结构,如队列、栈或图。在实际应用中,可能还需要考虑错误处理、内存管理以及性能优化等问题。例如,删除操作可能需要改进以处理删除链表中的第...
链表是一种重要的数据结构,它在计算机科学...总之,C语言实现链表快速排序是一项挑战性的任务,它涉及到对链表操作和递归算法的深入理解。通过这个实践,可以提升对数据结构和算法的掌握,同时也有助于提高编程技巧。
在这个主题中,我们将深入探讨如何用C语言实现链表的基本操作,包括创建链表、插入元素、删除元素以及遍历链表。 首先,链表不同于数组,数组中的元素在内存中是连续存储的,而链表中的节点通过指针链接,可以分散...
现在,你已经拥有了一个完整的C语言实现链表选择排序的程序。你可以创建一个链表,填充一些随机或特定的数值,然后调用`selectionSortList`函数对链表进行排序,最后通过`printList`函数验证排序结果。这种实现方法...
C语言实现 链表操作,链表 建立 输出 删除 插入,整个程序代码,看完后会让你对链表操作有更深的体悟
根据提供的文件信息,本文将详细解释如何使用C语言来实现链表的基本操作——增加、删除、修改和查询。这些操作是数据结构学习中的基础部分,对于理解更复杂的数据结构非常有帮助。 ### 一、链表简介 链表是一种...
链表综合系统链表综合系统链表综合系统链表综合系统
标题“C语言——链表的归并_c语言链表详解”和描述“用c语言写链表归并”明确指出了本文的主要内容:使用C语言实现链表的归并操作,并对C语言中的链表进行详细讲解。 #### 代码解析 ##### 1. 结构体定义 ```c ...
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态...
总结,本篇文章介绍了C语言实现单向链表的基本操作,包括创建链表、插入节点、删除节点、判断链表是否有环以及合并两个已排序的链表。通过理解这些基本操作,可以为更复杂的数据结构和算法打下坚实的基础。在VC6.0...
这是利用c语言中的链表来解决的问题,有利于你对C语言链表的更好的了解
window平台,用clion实现c语言链表
是用C语言来实现对链表的各种操作,数据结构课程一般会用到。保证程序正确性
本项目"链表HuffmanTree"旨在利用C语言实现哈夫曼树(Huffman Tree),这是一种与链表密切相关的数据结构,广泛应用于数据压缩,如文件压缩算法。 哈夫曼编码是一种基于频率的变字长编码方法,用于无损数据压缩。它...
c语言链表的基本操作链表主要有以下几大特性:1、解决数组无法存储多种数据类型的问题。2、解决数组中,元素个数无法改变的限制(C99的变长数组,C++也有变长数组可以实现)。3、数组移动元素的过程中,要对元素进行大...
c语言链表的基本操作链表主要有以下几大特性: 1、解决数组无法存储多种数据类型的问题。2、解决数组中,元素个数无法改变的限制(C99的变长数组,C++也有变长数组可以实现)。3、数组移动元素的过程中,要对元素进行...