C语言-数据结构-双链表插入查找
来源:互联网 发布:seo诊断seo8 编辑:程序博客网 时间:2024/06/03 21:07
#include <stdio.h>
#include <stdlib.h>
///双链表
typedef int datatype;
typedef struct node
{
datatype data;
struct node *prior,*next;
}body;
body *table()
{
int i;
body *head,*p,*s,*end;
printf("please input element:");
head=(body*)malloc(sizeof(body));
head->prior=NULL;
head->next=NULL;
p=head;
for(i=0;;i++)
{
s=(body*)malloc(sizeof(body));
scanf("%d",&s->data);
p->next=s;
s->prior=p;
p=s;
if(getchar()=='\n')
break;
}
end=(body*)malloc(sizeof(body));
p->next=end;
end->prior=p;
end->next=NULL;
return head;
}
///输出
void output(body *head)
{
body *p=head->next;
while(p->next)
{
printf("%d ",p->data);
p=p->next;
}
}
///查找
body *search(body *head)
{
int x;
body *p=head->next;
printf("\n请输入查找并删除的值:");
scanf("%d",&x);
while(p->next)
{
if(p->data==x)
return p;
else
{
p=p->next;
}
}
printf("cannt seach");
exit(1);
}
///删除释放
void del(body *p)
{
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
///插入
body *insert(body *head)
{
int j=1,index;
body *p=head,*s;
printf("\nplaese enter index:");
scanf("%d",&index);
while(p->next&&j<index)
{
p=p->next;
++j;
}
if(!p->next||j>index)
{
exit(1);
}
s=(body*)malloc(sizeof(body));
printf("\n请输入插入值:");
scanf("%d",&s->data);
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
}
int main()
{
body *head,*q;
head=table();
output(head);
q=search(head);
del(q);
output(head);
printf("\n");
insert(head);
output(head);
return 0;
}
#include <stdlib.h>
///双链表
typedef int datatype;
typedef struct node
{
datatype data;
struct node *prior,*next;
}body;
body *table()
{
int i;
body *head,*p,*s,*end;
printf("please input element:");
head=(body*)malloc(sizeof(body));
head->prior=NULL;
head->next=NULL;
p=head;
for(i=0;;i++)
{
s=(body*)malloc(sizeof(body));
scanf("%d",&s->data);
p->next=s;
s->prior=p;
p=s;
if(getchar()=='\n')
break;
}
end=(body*)malloc(sizeof(body));
p->next=end;
end->prior=p;
end->next=NULL;
return head;
}
///输出
void output(body *head)
{
body *p=head->next;
while(p->next)
{
printf("%d ",p->data);
p=p->next;
}
}
///查找
body *search(body *head)
{
int x;
body *p=head->next;
printf("\n请输入查找并删除的值:");
scanf("%d",&x);
while(p->next)
{
if(p->data==x)
return p;
else
{
p=p->next;
}
}
printf("cannt seach");
exit(1);
}
///删除释放
void del(body *p)
{
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
///插入
body *insert(body *head)
{
int j=1,index;
body *p=head,*s;
printf("\nplaese enter index:");
scanf("%d",&index);
while(p->next&&j<index)
{
p=p->next;
++j;
}
if(!p->next||j>index)
{
exit(1);
}
s=(body*)malloc(sizeof(body));
printf("\n请输入插入值:");
scanf("%d",&s->data);
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
}
int main()
{
body *head,*q;
head=table();
output(head);
q=search(head);
del(q);
output(head);
printf("\n");
insert(head);
output(head);
return 0;
}
阅读全文
0 0
- C语言-数据结构-双链表插入查找
- C语言-数据结构-插入
- 数据结构 查找及排序算法、直接插入排序及顺序查找(c语言实现)
- 数据结构--插入排序(C语言)
- C语言数据结构插入算法
- 平衡二叉树的 插入 删除 查找 等功能c语言实现 数据结构
- 平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)【数据结构】
- C语言 数据结构查找 顺序查找及折半查找
- 数据结构 C语言实现直接插入排序
- 数据结构_8:查找:Hash:C语言
- 数据结构:二叉查找树(C语言实现)
- 【C语言】查找_数据结构_练习
- 数据结构--双链表(C语言)
- C语言数据结构-双链表
- C语言实现双链表基本操作(创建、查找、插入、删除)
- 链表的查找和插入(c语言)
- C语言---单链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- java基础(1)
- algorithm中sort函数
- hibernate状态
- mybatis--映射器
- 剑指offer--入栈、出栈正确性的判断
- C语言-数据结构-双链表插入查找
- CentOS7下安装MySQL5.7安装与配置(YUM)
- CSS选择器详解1——常用选择器
- C++和Java的浅层拷贝与深层拷贝
- 二叉树的遍历
- POJ 1177 Picture 笔记
- 你需要理解的 Java 反射机制知识总结
- Python压缩文件
- 4883: [Lydsy2017年5月月赛]棋盘上的守卫