数据结构c语言 单链表源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*单链表的各种操作*/

#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()

{

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); /*显示链表所有数据*/ 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;

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("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);

}

}

void setnull(struct LNode **p)

{

*p=null;

}

int length (struct LNode **p)

{

int n=0;

struct LNode *q=*p;

while (q!=null)

{

n++;

q=q->next;

}

return(n);

}

ElemType get(struct LNode **p,int i) {

int j=1;

struct LNode *q=*p;

while (j

{

q=q->next;

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++;

}

相关文档
最新文档