?? list_l1.c
字號:
#include<stdio.h>
#include<GRAPHICS.H>
#define ERROR 0
#define OK 1
#define TURE 1
#define FALSE 0
#define OVERFLOW -2
typedef int ElemType;
typedef int status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}*LinkList,Lnode;
status InitList_L(LinkList L)
{
L=(LinkList)malloc(sizeof(Lnode));
if(!L)
exit( OVERFLOW);
L->next=NULL;
return OK;
}
status ListInsert_L(LinkList L, ElemType i, ElemType *e)
{
int j=1;
LinkList new,p=L->next;
if(i<1||!p)
return ERROR;
while(p&&j<i-1)
{
p=p->next;
j++;
}
new=(LinkList)malloc(sizeof(Lnode));
new->data=*e;
new->next=p->next;
p->next=new;
return OK;
}
status getElem_L(LinkList L, ElemType i, ElemType *e)
{
int j=1;
LinkList p=L->next;
if(i<1||!p)
return ERROR;
while(p&&j<i)
{p=p->next;j++;}
*e=p->data;
return OK;
}
/*ElemType compare( )
{
int i=1;
LinkList p=L->next;
while(p)
{
return p->data;
p=p->next;
i++;}
}
}*/
status LocateElem_L(LinkList L, ElemType e, ElemType *i)
{
LinkList p=L->next;
*i = 0;
while(p)
{
if(e!=p->data)
(*i)++;
else
{
++(*i);
printf("%d\n",*i);
break;
}
p=p->next;
}
if(p==NULL)
printf("it's NO the number!\n");
return OK;
}
status deleteElem_L(LinkList L, ElemType i, ElemType *e)
{
int j=1;
LinkList p=L->next,q;
if(j<1||!p)
return ERROR;
while(p&&j<i-1)
{
p=p->next;
}
q=p->next;
*e=q->data;
p->next=q->next;
free(q);
return OK;
}
status ListLength_L(LinkList L,ElemType *e)
{
LinkList p=L->next;
int i=0;
while(p)
{
p=p->next;
i++;
}
*e=i;
return OK;
}
status clear_L(LinkList L)
{
LinkList q=L->next,p;
p=q;
while(q)
{
p=q->next;
free(q);
q=p;
}
L->next=NULL;
return OK;
}
status Invert_L(LinkList L)
{
LinkList p,q,t;
p=L->next;
q=p->next;
p->next=NULL;
while(q)
{
t=q->next;
L->next=q;
q->next=p;
p=q;q=t;
}
return OK;
}
status MergeList_L(LinkList La,LinkList Lb,LinkList Lc)
{
LinkList pa,pb,pc;
pa=La->next;pb=Lb->next;
pc=La=Lc;
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);
return OK;
}
status AddList_L(LinkList L)
{
int elem=1;
LinkList p,q;
//p=(LinkList)malloc(sizeof(Lnode));
q=L;
printf("input the elemtype,if finish please print'0':\n");
while(elem!=0)
{
scanf("%d",&elem);
if(elem==0)
p->next=NULL;
else{
p=(LinkList)malloc(sizeof(Lnode));
p->data=elem;
q->next=p;
q=p;
}
}
return OK;
}
status printList_L(LinkList L)
{
LinkList p=L->next;
if(p==NULL)
printf("it's have no number!\n");
else
{
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
return OK;
}
void main()
{
LinkList La,Lb,Lc;
int i=100,*q=&i,*p,*w,*m,*z;
InitList_L(La);
printf("AddLa:\n");
AddList_L(La);
printList_L( La);
InitList_L(Lb);
printf("AddLb:\n");
AddList_L(Lb);
printList_L( Lb);
/*
printf("input the wanted get elemlocate:\n");
scanf("%d",&k);
GetElem_L( L, k, q);
printf("%d\n",*q);
LocateElem_L( L,3,w);
printf("%d\n",*i);
printf("input the wanted deleted locate:\n");
scanf("%d",&i);
printf("%d\n",*p);
printElem_L(L);
clear_L(L);
printElem_L(L);
*/
MergeList_L( La,Lb,Lc);
printf("input the MergeList_L:\n");
printList_L( Lc);
printf("input the Invert_L:\n");
Invert_L( Lc);
printList_L( Lc);
printf("the elem 3's locate:");
LocateElem_L( Lc,3,w);
ListLength_L(Lc,m);
printf("the length=");
printf("%d\n",*m);
deleteElem_L(Lc,2,p);
printf("the delete second elem=%d\nthen print Lc:\n",*p);
printList_L(Lc);
printf("when insert third locate elem=100,then print Lc:\n");
ListInsert_L(Lc, 3, q);
printList_L(Lc);
getElem_L( Lc, 4, z);
printf("the fouth pos elem=%d\n",*z);
printf("using the clear_L,then print Lc:\n");
clear_L(Lc);
printList_L(Lc);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -