# include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
# define SIZE 10
# define OK 1
# define TRUE 1
# define ERROR 0
# define FALSE 0
# define OVERFLOW -1
typedef int Status;
typedef int ElemType;
typedef struct LNode {
ElemType Data;
struct LNode * next;
}LNode, *LinkList;
int main() {
return 0;
}
Status InitList(LinkList * L)
{
*L = (LinkList)malloc(sizeof(LNode));
(**L).next = NULL;
return OK;
}
int ListLength(LinkList L)
{
int i = 0;
while (L) {
i++;
L = L->next;
}
return i - 1;
}
void CreateList_H(LinkList * L, int n)
{
LinkList p;
* L = (LinkList)malloc(sizeof(LNode));
(**L).next = NULL;
for (int i = n;i > 0;--i) {
p = (LNode *)malloc(sizeof(LNode));
scanf("%d",&(p->Data));
p->next = (**L).next;
(**L).next = p;
printf("-- %d", p->Data);
}
getchar();
}
void CreateList_T(LinkList * L, int n)
{
LinkList p,rear;
*L = (LinkList)malloc(sizeof(LNode));
rear = *L;
(**L).next = NULL;
for (int i = n;i > 0;--i) {
p = (LNode *)malloc(sizeof(LNode));
scanf("%d",&(p->Data));
p->next = rear->next;
rear->next = p;
rear = p;
}
}
Status GetElem(LinkList L, int i, ElemType * e)
{
LNode * p;
int j = 1;
p = L->next;
while (p&&j < i) {
p = p->next;
++j;
}
if (!p || j > i) return ERROR;
*e = p->Data;
return OK;
}
Status ListEmpty(LinkList L)
{
if (L->next)
{
return 0;
}
else
return 1;
}
Status ClearList(LinkList * L)
{
LNode *p, *q;
p = (**L).next;
while (p)
{
q = p->next;
free(p);
p = q;
}
(**L).next = NULL;
return OK;
}
Status Destroy_List(LinkList * L)
{
LNode *p;
while (L)
{
p = *L;
*L = (**L).next;
free(p);
}
return OK;
}
Status ListInsert_L(LinkList * L, int i, ElemType e)
{
int j = 0;
LinkList p,s;
p = *L;
while (p&&j < i - 1) {
p = p->next;++j;
}
if (!p || j > i - 1) return ERROR;
s = (LinkList)malloc(sizeof(LNode));
s->Data = e;
s->next = p->next;
p->next = s;
return OK;
}
Status ListDelete_L(LinkList * L, int i, ElemType * e)
{
int j = 0;
LinkList p, q;
p = *L;
while (p&&j < i - 1) {
p = p->next;++j;
}
if (!p || j > i - 1) return ERROR;
q = p->next;
*e = q->Data;
p->next = q->next;
free(q);
return OK;
}
void MergeList_L(LinkList * La, LinkList * Lb, LinkList * Lc)
{
LinkList pa, pb,pc;
pa = (**La).next;
pb = (**Lb).next;
pc = pa;
*Lc = pc;
while (pa&&pb) {
if (pa->Data <= pb->Data) {
pc->next = pa;
pc = pa;
pa = pa->next;
}
else {
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
free(pb);
}