《数据结构C语言版 单链表源代码.pdf》由会员分享,可在线阅读,更多相关《数据结构C语言版 单链表源代码.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/*单链表的各种操作*/#include stdio。h#include malloc。hdefine null 0typedef int ElemType;/字符型数据*/struct LNodeElemType 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);
2、void display(struct LNode*p);int locate(struct LNode*p,ElemType x);void main()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;i=n;i+)printf(将数据插入到单链表中:);scanf(”d,y);insert(&head,y,i);/*插入数据到链表/display(head
3、);/显示链表所有数据*/printf(”select 1 求长度 length()n”);printf(select 2 取结点 get()n);printf(select 3 求值查找 locate()n”);printf(select 4 删除结点 delete()n);printf(select 0 退出n);printf(input your select:);scanf(d,select);while(select!=0)switch(select)case 1:x1=length(&head);printf(输出单链表的长度%d”,x1);display(&head);break
4、;case 2:printf(”请输入要取得结点:”);scanf(”%d”,m);x2=get(head,m);printf(d”,x2);display(head);break;case 3:printf(”请输入要查找的数据:scanf(%d,e);x3=locate(&head,e);printf(d,x3);display(head);break;);”case 4:printf(请输入要删除的结点:);scanf(”d”,&g);dele(&head,g);display(head);break;printf(select 1 求长度 length()n”);printf(”sel
5、ect 2 取结点 get()n”);printf(”select 3 求值查找 locate()n);printf(”select 4 删除结点 delete()n);printf(select 0 退出n);printf(”input your select:”);scanf(”%d”,&select);void setnull(struct LNode*p)int length(struct LNode*p)p=null;int n=0;struct LNode*q=*p;while(q!=null)n+;q=qnext;return(n);ElemType get(struct LNo
6、deint j=1;struct LNode*q=*p;while(ji&q!=null)q=q-next;j+;if(q!=null)return(q-data);elsep,int i)printf(”位置参数不正确!n”);return 0;int locate(struct LNode*p,ElemType x)int n=0;struct LNode q=*p;while(q!=null&q-data!=x)if(q=null)return(-1);q=q-next;n+;elsevoid insert(struct LNode*p,ElemType x,int i)int j=1;
7、return(n+1);struct LNode*s,*q;s=(struct LNode)malloc(sizeof(struct LNode));sdata=x;q=*p;if(i=1)elsewhile(jnext;qnext=s;q=qnext;j+;snext=q;p=s;void dele(struct LNode*p,int i)int j=1;struct LNode q=p,t;if(i=1)elsewhile(ji-1&qnext!=null)if(qnext!=null&j=i-1)t=qnext;qnext=tnext;q=q-next;j+;t=q;p=qnext;elseprintf(位置参数不正确!n);if(t!=null)free(t);void display(struct LNode*p)struct LNode q;q=p;printf(”单链表显示:);if(q=null)printf(”链表为空!);else if(qnext=null)printf(dn”,qdata);elseprintf(”%d-,q-data);q=q-next;while(qnext!=null)printf(”d”,qdata);printf(n);
限制150内