c语言————链表 基本任务练习

本文详细介绍了单链表的各种操作实现方法,包括就地逆置、有序插入、删除重复节点、排序、合并有序链表及求交集等,并提供了具体的C语言实现代码。

实验内容:

首先建立一个带或不带头结点的单链表(n个结点,每个结点值由键盘输入),然后对该单链表进行相应操作,实现以下1~6中之一算法,并输出各种操作的结果:

1、用单链表作为存储结构,实现线性表(a0,a1,…, an-1)就地逆置的操作,所谓就地指辅助空间应为O(1)。

2、设单链表L是一个递减有序表,试写一算法将X插入其中后仍保持L的有序性。

3、写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。

4、设计一个算法,对单链表按结点值从小到大对结点进行排序。

5、设计一个算法,将两个有序单链表合并成一个有序的单链表。

6、设计一个算法,求两个单链表表示的集合的交集,并将结果用一个新的单链表保存并返回。

一、链表任务开始前的基础代码:

1、弄个结构体

2、创建链表函数(带头节点的链表)

3、创建结点函数

4、插入结点函数

5、打印链表

附加:结点删除就不写了啊,因为老师安排的任务用不着删除

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct stu
{
    int data;
    struct stu* next;
}Node;


//创建链表
Node* createList()
{
    Node* headNode=(Node*)malloc(sizeof(Node));
    headNode->next=NULL;
    return headNode;
}

//创建结点
Node* createNode(int data)
{
    Node* newNode=(Node*)malloc(sizeof(Node));
    newNode->data=data;
    newNode->next=NULL;
    return newNode;
}

//尾插
void InsByTail(Node* headNode,int data)
{
    Node* newNode=createNode(data);
    while(headNode->next
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zkflzl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值