<求助>链表的插入.删除.查找...
程序代码:
#include<stdio.h> #include<malloc.h> #include<conio.h> #include<stdlib.h> /*存储*/ typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; /*初始化*/ LinkList list(LinkList L) { L=(LNode *)malloc(sizeof(LNode)); if(!L) return 0; L->next =NULL; return L; } /*建立*/ LinkList creat(int n) { LNode *L,*p,*q; int i; L=(LNode *)malloc(sizeof(LNode)); L->next=NULL; q=L; for(i=1;i<=n;++i) { p=(LNode *)malloc(sizeof(LNode)); printf("请输入第%d个元素",i); scanf("%d",&p->data); p->next=NULL; q->next=p; } return L; } /*元素的插入*/ int insert(LinkList L,int i, ElemType e) { LNode *p,*s; int j; p=L; j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return 0; s=(LNode * )malloc(sizeof(LNode)); s->data = e; s->next=p->next; p->next =s; return 1; } /*删除*/ int dele(LinkList L,int i,ElemType *e) { LNode *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 0; q=p->next; *e = q->data; p->next=q->next; free(q); return 1; } /*查找*/ int search(LinkList L, ElemType e) { LNode *p; int i; p=L->next; i=1; while(p&&p->data!=e) { p=p->next; i++; } if(p== NULL) return 0; else return 1; } /*输出*/ void printlinklist(LinkList L) { LNode *p; p=L->next; printf("\n单链表为:"); while(p) { printf("%d",p->data); p=p->next; } } /*主函数*/ int main() { LinkList L; int n,i,e,status; printf("请输入单链表长度:"); scanf("%d",&n); L=creat(n); printlinklist(L); status=insert(L,1,27); if(status) { printf("\n新的单链表:"); printlinklist(L); } else { printf("\n插入失败"); return 0; } status=dele(L,3,&e);//删除第3个元素 if(status) { printf("\n删除的为:%d",e); printf("\n新的单链表:"); printlinklist(L); } else { printf("\n删除失败!"); return 0; } printf("\n请输入要查找的值:"); scanf("%d",&e); i=search(L,e); if(i) printf("\n删除的元素位置为%d:",i); else printf("删除失败!"); return 0; }
为什么初始化会报错啊.
[ 本帖最后由 、镜花氺月 于 2011-6-20 10:26 编辑 ]