【文件属性】:
文件名称:动态单链表
文件大小:780KB
文件格式:ZIP
更新时间:2018-05-18 17:07:40
数据结构
#include
#include
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
//=========初始化===========//
LinkList Inlist(LinkList L)
{
LinkList p=NULL;
p=(LinkList)malloc(sizeof(LNode));
if(!p)
printf("储存错误!!\n");
p->next=NULL;
L=p;
return L;
}
//========建立n个元素链表========//
LinkList Inlist_L(LinkList L,int n)
{
LinkList p=NULL;
int i;
for(i=0;idata);
p->next=L->next;
L->next=p;
}
return L;
}
//=======输出元素=========//
void print(LinkList L)
{
LinkList p=NULL;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
//======查找元素======//
int InSert(LinkList L,int n)
{
LinkList p=NULL,s=NULL;
int j=1,post;
s=(LinkList)malloc(sizeof(LNode));
if(!s)
printf("储存错误!!\n");
s->next=NULL;
printf("请输入要查找的元素:");
scanf("%d",&s->data );
p=L;
while(p&&j<=n)
{
p=p->next;
j++;
if(p->data==s->data)
{
post=1;
break;
}
else
post=0;
}
if(post==1)
printf("查找的元素位于%d\n",j-1);
if(post==0)
printf("无此数!!\n");
return 0;
}
//=======插入元素==========//
int InSort(LinkList L,int i,int x)
{
LinkList p=NULL,s=NULL;
int j=0;
p=L;
while(p&&jnext;
j++;
}
if(!p||j>i-1)
{
printf("输入位置不合法!!!\n");
return 0;
}
s=(LinkList)malloc(sizeof(LNode));
if(!s)
printf("储存错误!\n");
s->data=x;
s->next=p->next;
p->next=s;
return 0;
}
//=======删除元素======//
LinkList InDelete(LinkList L,int i)
{
int j;
LinkList q=NULL,p=NULL;
p=L;
j=0;
while(p->next&&jnext;
j++;
}
if(!(p->next)||j>i-1)
{
printf("输入位置不合法!!\n");
return L;
}
q=p->next;
p->next=q->next;
free(q);
return L;
}
//=======合并========//
//======菜单=========//
void menu()
{
printf("\t==========单链表的应用==========\n");
printf("\t\t1、初始化并建立链表\n");
printf("\t\t2、查找元素\n");
printf("\t\t3、插入元素\n");
printf("\t\t4、删除元素\n");
printf("\t\t5、合并元素\n");
printf("\t\t6、程序结束\n");
}
int main()
{
LinkList L=NULL;
int n,k=1,t,m,x,i;
while(k==1)
{
menu();
printf("请输入你的选择:");
scanf("%d",&t);
switch(t)
{
case 1:
printf("请输入要建立的链表长度:");
scanf("%d",&n);
L=Inlist(L);
L=Inlist_L(L,n);
break;
case 2:
InSert(L,n);
break;
case 3:
printf("请输入要插入的元素和要插入的位置:");
scanf("%d%d",&x,&i);
InSort(L,i,x);
print(L);
break;
case 4:
printf("请输入要删除元素的位置:");
scanf("%d",&m);
L=InDelete(L,m);
print(L);
break;
case 6:
k=0;
printf("退出成功!!\n");
}
}
getchar();getchar();
return 0;
}
【文件预览】:
动态单链表
----动态单链表()
--------动态单链表.vcxproj.filters(953B)
--------动态单链表.vcxproj.user(143B)
--------动态单链表.vcxproj(3KB)
--------Debug()
--------动态单链表.cpp(3KB)
----动态单链表.sln(912B)
----动态单链表.suo(10KB)
----ipch()
--------动态单链表-97bff269()
----Debug()
--------动态单链表.exe(30KB)
--------动态单链表.ilk(305KB)
--------动态单链表.pdb(363KB)
----动态单链表.sdf(1.58MB)