题目:
1.已知单链表L是一个递增有序链表,设计一个算法,删除表中data值在大于等于min并且小于等于max之间的节点,同时释放删除节点的空间,分析时间复杂度
2.设计一个算法就地逆置单链表
3.已知三个递增有序单链表A,B,C,长度分别为m,n和p设计一个算法使链表A 仅包含三个表中均包含的数据元素,且没有重复,并释放无用节点。限定算法的时间复杂度为O(m+n+p)
链表结构体
typedef struct node {
int data;
struct node *next;
} LNode, *LinkList;
代码
#include "stdio.h"
#include "stdlib.h"
typedef struct node {
int data;
struct node *next;
} LNode, *LinkList;
//初始化数据,尾插法
LinkList InitList(){
LinkList head,p;
int i = 0;
head = (LinkList)malloc(sizeof(LNode));
head->next = NULL;
printf("输入负数结束输入:\n");
for(scanf("%d",&i);i > -1;scanf("%d",&i)){
p = (LinkList)malloc(sizeof(LNode));
p->data = i;
p->next = head->next;
head->next = p;
}
return head;
}
//初始化数据,头插法
LinkList Init(){
LinkList p,r;
LinkList list = NULL;
int i;
printf("输入负数结束输入:\n");
for(scanf("%d",&i);i > -1;scanf("%d",&i)) {
p = (LinkList)malloc(sizeof(LNode));
p->data = i;
p->next = NULL;
if(!list) {
l