#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList *L,int n);
Status GetElem_L(LinkList L,int i,ElemType *e);
Status ListInsert_L(LinkList L,int i,ElemType e);
void MergeList_L(LinkList *La,LinkList *Lb,LinkList *Lc);
int main(int argc, const char * argv[]) {
LinkList L1=(LinkList)malloc(sizeof(LNode));
LinkList L2=(LinkList)malloc(sizeof(LNode));
LinkList L3=(LinkList)malloc(sizeof(LNode));
L1->next=NULL;
L2->next=NULL;
CreateList_L(&L1, 5);
CreateList_L(&L2, 5);
int e=0;
GetElem_L(L1, 3, &e);
// ListInsert_L(L1, 3, 99);
MergeList_L(&L1, &L2, &L3);
LinkList p=L3->next;
while (p) {
printf("%d ",p->data);
p=p->next;
}
return 0;
}
Status GetElem_L(LinkList L,int i,ElemType *e){
LinkList p=L->next;
int j=1;
while (p&&j<i) {
p=p->next;++j;
}
if(!p||j>i)
return ERROR;
*e = p->data;
return OK;
}
Status ListInsert_L(LinkList L,int i,ElemType e){
LinkList p=L,s;
int j=0;
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){
LinkList p=L,q;
int j=0;
while (p->next&&j<i-1) {
p=p->next;
j++;
}
if (!(p->next)||j>i-1) {
return ERROR;
}
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return OK;
}
void CreateList_L(LinkList *L,int n){
(*L)=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
LinkList p;
for (int i=n; i>0; --i) {
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=(*L)->next;
(*L)->next=p;
}
}
void MergeList_L(LinkList *La,LinkList *Lb,LinkList *Lc){
LinkList pa=(*La)->next;
LinkList pb=(*Lb)->next;
LinkList pc;
pc=(*Lc)=(*La);
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(*Lb);
*Lb=NULL;
}
线性表的单链表存储结构
猜你喜欢
转载自blog.csdn.net/qq_40215528/article/details/83063722
今日推荐
周排行