2022年数据结构C语言版单链表源代码 .pdf
/* 单链表的各种操作 */ #include #include #define null 0 typedef int ElemType; /* 字符型数据 */ struct LNode ElemType data; struct LNode *next; ; void setnull(struct LNode *p); int length (struct LNode *p); ElemType get(struct LNode *p,int i); void insert(struct LNode *p,ElemType x,int i); void dele(struct LNode *p,int i); void display(struct LNode *p); int locate(struct LNode *p,ElemType x); void main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - struct LNode *head,*q; /*定义静态变量 */ int select,x1,x2,x3,x4; int i,n; int m,g; char e,y; setnull(&head); /* 建设链表并设置为空表*/ printf( 请输入数据长度 : ); scanf(%d,&n); for(i=1;inext; return(n); ElemType get(struct LNode *p,int i) int j=1; struct LNode *q=*p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - while (jnext; j+; if(q!=null) return(q-data); else printf( 位置参数不正确 !n); return 0; int locate(struct LNode *p,ElemType x) int n=0; struct LNode *q=*p; while (q!=null&q-data!=x) q=q-next; n+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - if(q=null) return(-1); else return(n+1); void insert(struct LNode *p,ElemType x,int i) int j=1; struct LNode *s,*q; s=(struct LNode *)malloc(sizeof(struct LNode); s-data=x; q=*p; if(i=1) s-next=q; *p=s; else while(jnext!=null) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - q=q-next; j+; if(j=i-1) s-next=q-next; q-next=s; else printf( 位置参数不正确 !n); void dele(struct LNode *p,int i) int j=1; struct LNode *q=*p,*t; if(i=1) t=q; *p=q-next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - else while(jnext!=null) q=q-next; j+; if(q-next!=null&j=i-1) t=q-next; q-next=t-next; else printf( 位置参数不正确 !n); if(t!=null) free(t); void display(struct LNode *p) struct LNode *q; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - q=*p; printf( 单链表显示 : ); if(q=null) printf( 链表为空 !); else if (q-next=null) printf(%dn,q-data); else while(q-next!=null) printf(%d-,q-data); q=q-next; printf(%d,q-data); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -