链表的实现及对它的一些操作: #include <malloc.h>#define ERROR 2#define OK 1typedef int ElemType;typedef struct LNode...{ ElemType data; struct LNode *next;} LNode,*LinkList;//初始化LinkList ListInit()...{ LNode *base=(LinkList)malloc(sizeof(LNode)); base->data=0; base->next=NULL; return base;}//插入一个元素int ListInsert(LinkList L,int i,ElemType e)...{ LNode *p,*s; int j=0; p=(LNode *)L; while(p&&j<i-1) ...{ p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(LNode *)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK;}//查找一个元素int GetElem(LinkList L,int i,ElemType *e)...{ LNode *p; int j=1; p=(LNode *)L->next; while(p&&j<i) ...{ p=p->next; ++j; } if(!p||j>i) return ERROR; *e=p->data; return OK;}//倒置顺序void Reverse_List(LNode *head)...{ LNode *p=head->next,*q; head->next=NULL; while(p) ...{ q=p->next; p->next=head->next; head->next=p; p=q; }}//把最小的元素移到表首void MoveMinFirst(LinkList head)...{ LNode *p,*q,*r; r=head; //r指向头结点 p=head->next; //p指向第一个结点 while(p->next) ...{ if(p->next->data<r->next->data) r=p; p=p->next; } if(r->next!=head->next) //不只一个元素 ...{ q=r->next; r->next=q->next; q->next=head->next; head->next=q; } }//求最大值(递归算法)int GetMaxValue(LinkList head)...{ int temp; if(!head->next) return head->data; else ...{ temp=GetMaxValue(head->next); if(head->data>=temp) return head->data; else return temp; }}//选择排序void SelectSort(LinkList L)...{ LNode *p,*q,*r; int temp; p=L->next; while(p) ...{ q=p->next; r=p; //r指向最小的结点 while(q) ...{ if(q->data<r->data) r=q; q=q->next; } if(r!=p) ...{ temp=p->data; p->data=r->data; r->data=temp; } p=p->next; //p指向已排序的尾部 }}//顺序输出void Display(LinkList L)...{ LNode *p=L->next; while(p) ...{ printf("%d ,",p->data); p=p->next; }}//倒序输出void Reverse_OutPut(LNode *head)...{ if(head) ...{ Reverse_OutPut(head->next); printf("%d ,",head->data); }}int main(int argc, char* argv[])...{ int a; LinkList La; La=ListInit(); ListInsert(La,1, 7); ListInsert(La,2, 9); ListInsert(La,3, 6); ListInsert(La,4, 3); ListInsert(La,5, 11); Display(La); printf(" "); Reverse_OutPut(La->next); printf(" "); Display(La); Reverse_List(La); printf(" after reverse... "); Display(La); SelectSort(La); printf(" after sort! "); Display(La); printf(" max value is:%d ",GetMaxValue(La->next)); printf(" after move! "); MoveMinFirst(La); Display(La); GetElem(La,3,&a); printf("a=%d",a); return 0;}