临近期末,不得不复习的当代大学生╮(╯▽╰)╭。本来这一个随笔应该和上一个是放在一起的,但昨天太困了就没写这个,所以就分两个发好了。话不多说,代码参上。
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode {
int data;
struct LNode *next;
}LNode,*LinkList;
//头插法
void CreateList(LinkList &L, int n) {
L = (LinkList)malloc(sizeof(LNode));
if (!L) {
printf("空间分配失败\n");
}
L->next = NULL;
printf("输入%d个数\n", n);
for (int i = 0; i < n; i++) {
LinkList p;
p = (LinkList)malloc(sizeof(LNode));
scanf_s("%d", &p->data);
p->next = L->next;
L->next = p;
}
}
//尾插法
void CreateListend(LinkList &L, int n) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LinkList r, s;
r = (LinkList)malloc(sizeof(LNode));
if (!L) {
printf("空间分配失败\n");
}
r = L;
printf("输入%d个数\n", n);
for (int i = 0; i < n; i++) {
s = (LinkList)malloc(sizeof(LNode));
scanf_s("%d", &s->data);
s->next = r->next;
r->next = s;
r = s;
}
}
//遍历
void Travellist(LinkList &L) {
LinkList s;
s = L->next;
while (s != NULL) {
printf("%d", s->data);
s = s->next;
}
printf("\n");
}
//插入
int Insertlist(LinkList &L, int i,int e) {
LinkList p;
p = L;
int j = 0;
while (p && j < i - 1) {
p = p->next;
j++;
}
if (j >= i - 1 || !p) {
printf("插入失败\n");
return 0;
}
LinkList s;
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
}
//删除
void Deletelist(LinkList &L) {
LinkList p;
p = L->next;
int flag = 0;
int e;
LinkList r;
r = (LinkList)malloc(sizeof(LNode));
printf("请输入要删除的数\n");
scanf_s("%d", &e);
while (p) {
if (p->data == e) {
flag = 1;
break;
}
r = p;
p = p->next;
}
if (flag == 0) {
printf("查找失败\n");
}
else {
r->next = p->next;
free(p);
}
}
//合并
void MergeList(LinkList &La, LinkList &Lb, LinkList &Lc) {
LinkList pa, pb, pc;
Lc = (LinkList)malloc(sizeof(LNode));
pa = (LinkList)malloc(sizeof(LNode));
pb= (LinkList)malloc(sizeof(LNode));
pc= (LinkList)malloc(sizeof(LNode));
pa = La->next;
pb = Lb->next;
Lc = pc = La;
while (pa && pb) {
if (pa->data < pb->data) {
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if (pa->data > pb->data) {
pc->next = pb;
pc = pb;
pb = pb->next;
}
else if (pa->data == pb->data) {
pc->next=pa;
pc = pa;
pa = pa->next;
pb = pb->next;
}
}
if (pa) {
pc->next = pa;
}
else {
pc->next = pb;
}
free(Lb);
}
int main() {
LinkList L1;
LinkList L2;
LinkList L3;
CreateListend(L1, 3);
CreateListend(L2, 3);
MergeList(L1, L2, L3);
Travellist(L3);
return 0;
}
希望期末可以过关 = =