实验内容:
首先建立一个带或不带头结点的单链表(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

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

被折叠的 条评论
为什么被折叠?



