#include<stdio.h> #include<stdlib.h> #define OK 1 #define OVERFLOW -2 #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){ int i; LinkList p,rear; L=rear=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=1;i<=n;i++){ printf("请输入第%d个元素:",i); p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=NULL; rear->next=p; rear=p; } } Status ListInsert_L(LinkList &L,int i,ElemType e){ LinkList p,s; int j; p=L;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,q; int j; p=L;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; } Status ChangElem_L(LinkList &L,int i,ElemType e){ LinkList p; int j; p=L->next;j=1; while(p&&j<i){ p=p->next;++j; } if(!p||j>i)return ERROR; p->data=e; return OK; } Status GetElem_L(LinkList L,int i,ElemType &e){ LinkList p; int j; p=L->next;j=1; while(p&&j<i){ p=p->next;++j; } if(!p||j>i)return ERROR; e=p->data; return OK; } void SortList(LinkList head) {LinkList p,q,large;int temp; for(p=head->next;p->next!=NULL;p=p->next) {large=p; for(q=p->next;q;q=q->next) if(q->data>large->data) large=q; if(large!=p) {temp=p->data; p->data=large->data; large->data=temp;} } } void PrintList(LinkList L){ LinkList p; p=L->next; do{ printf("%d,",p->data); p=p->next; }while(p); printf("\n"); } void main() {int n,e,i,flag; LinkList L; printf("请输入元素个数:"); scanf("%d",&n); CreateList_L(L,n); printf("原始单链表:"); PrintList(L); printf("\n请选择要进行的操作:\n1 增,2 删,3 改,4 查,5 排序\n输入选择序号:"); scanf("%d",&flag); switch(flag) { case 1: printf("请输入要插入的元素:"); scanf("%d",&e); printf("请输入要插入的位置:"); scanf("%d",&i); ListInsert_L(L,i,e); printf("改变后的单链表:"); PrintList(L); break; case 2: printf("请输入要删除元素的位置:"); scanf("%d",&i); ListDelete_L(L,i,e); printf("改变后的单链表:"); PrintList(L); break; case 3: printf("请输入新的值:"); scanf("%d",&e); printf("请输入要修改元素的位置:"); scanf("%d",&i); ChangElem_L(L,i,e); printf("改变后的单链表:"); PrintList(L); break; case 4: printf("请输入要查找元素的位置:"); scanf("%d",&i); GetElem_L(L,i,e); printf("第%d个元素的值是:%d\n",i,e); break; case 5: SortList(L); printf("从大到小排序后的链表:\n"); PrintList(L); break; default: printf("你输入的选择不存在!\n"); break; } } 能实现增删改查和排序我运行的时候没错误啊?能说一下是什么错误吗,VC++下面有提示的