1.
2.
#include#include #define ERROR 0 #define OK 1 typedef int Status; typedef int ElementType; typedef struct LNode *List; struct LNode{ ElementType Data; List Next; }; struct LNode L; //List PtrL; //链表指针的定义移动到主函数里,不需要全局变量 //表的创建(尾插法) void CreateListTail(List* PtrL,int m[],int n){//函数修改 //void CreateListTail(List PtrL,int m[],int n) List p,s; int i; (*PtrL)=(List)malloc(sizeof(LNode));// 修改 //PtrL=(List)malloc(sizeof(LNode)); s=(*PtrL); // 表创建函数修改 //s=PtrL; for(i=0;i Data=m[i]; s->Next=p; s=p; } s->Next=NULL; } //求表长 int Length(List PtrL){ List p=PtrL; int j=0; while(p){ p=p->Next; j++; } return j; } //获取元素 Status Get(List PtrL,int i,ElementType *e){ int j; List p; p=PtrL->Next; j=1; while(p&&jNext; ++j; } if(!p||j>i){ return ERROR; } *e=p->Data; return OK; } //查找 //按序号查找 List FindKth(int K,List PtrL){ List p=PtrL; int i=1; while(p!=NULL&&i Next; i++; } if(i==K) return p; else return NULL; } //插入 List Insert(ElementType X,int i,List PtrL){ List p,s; if(i==1){ s=(List)malloc(sizeof(struct LNode)); s->Data=X; s->Next=PtrL; return s; } p=FindKth(i,PtrL); if(p==NULL){ printf("参数i错"); return NULL; } else{ s=(List)malloc(sizeof(struct LNode)); s->Data=X; s->Next=p->Next; p->Next=s; return PtrL; } } //删除 List Delete(int i,List PtrL){ List p,s; if(i==1){ s=PtrL; if(PtrL!=NULL) PtrL=PtrL->Next; else return NULL; free(s); return PtrL; } p=FindKth(i-1,PtrL); if(p==NULL){ printf("第%d个结点不存在",i); return NULL; } else if(p->Next==NULL){ printf("第%d个结点不存在",i); return NULL; } else{ s=p->Next; p->Next=s->Next; free(s); return PtrL; } } //输出 Status Output(List PtrL) { List p; p=PtrL->Next; while(p){ printf("%d ",p->Data); p=p->Next; } printf("n"); } int main(){ List PtrL; //链表指针定义移动到主函数里 int i,k,j,n,e,m[1000]; printf("请输入要存储元素的总个数:"); scanf("%d",&n); printf("请输入各个元素的值:"); for(i=0;i



