数据结构C语言版 单链表源代码
/*单链表的各种操作*/
#include <stdio.h>
#include <malloc.h>
#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)
{
}
int length (struct LNode **p)
{
int n=0; *p=null;
struct LNode *q=*p;
while (q!=null)
{
}
return(n);
}
ElemType get(struct LNode **p,int i)
{
int j=1; struct LNode *q=*p; n++; q=q->next;
while (j<i&&q!=null)
{
}
if(q!=null)
return(q->data); q=q->next; j++;
else
}
int locate(struct LNode **p,ElemType x) {
int n=0; {printf("位置参数不正确!\n"); return 0;}
struct LNode *q=*p;
while (q!=null&&q->data!=x)
{
} q=q->next; n++;
if(q==null)
return(-1);
else
}
void insert(struct LNode **p,ElemType x,int i) {
int j=1; return(n+1);
struct LNode *s,*q;
s=(struct LNode *)malloc(sizeof(struct LNode)); s->data=x;
q=*p;
if(i==1)
{
}
else
{
while(j<i-1&&q->next!=null) { s->next=q; *p=s;
} q=q->next; j++;
if(j==i-1)
{
}
else
printf("位置参数不正确!\n"); s->next=q->next; q->next=s;
}
}
void dele(struct LNode **p,int i) {
int j=1;
struct LNode *q=*p,*t; if(i==1)
{
} t=q; *p=q->next;
{
while(j<i-1&&q->next!=null) {
}
if(q->next!=null&&j==i-1) {
t=q->next;
q->next=t->next; q=q->next; j++;
}
}
} else printf("位置参数不正确!\n"); if(t!=null) free(t);
void display(struct LNode **p) {
struct LNode *q;
printf("单链表显示: "); if(q==null)
printf("链表为空!"); else if (q->next==null)
printf("%d\n",q->data); else
{
{ } } printf("%d",q->data); printf("%d->",q->data); q=q->next; while(q->next!=null)
printf("\n");
}
…… 此处隐藏:771字,全部文档内容请下载后查看。喜欢就下载吧 ……
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




