可进行查找删除插入的链表
来源:互联网 发布:淘宝商城加盟代理 编辑:程序博客网 时间:2024/05/01 14:04
#include<stdio.h>#include<stdlib.h> // malloc() 函数的头文件struct node *p = NULL, *p1 = NULL, *head = NULL ;struct node{int a; // 所建链表结点结构struct node *next;}; void scan() // 输入数据{ int b;printf("请输入数据,输入0表示结束输入!\n");while (1){scanf("%d", &b);if (b == 0) // 控制结束的条件{break;}p = (struct node *)malloc(sizeof (struct node)); // p为结构体指针 指向一个新生成的结构体p->a = b;p->next = NULL;if (head == NULL) head = p;else p1->next = p;p1 = p;}}void find() // 查找数据{int a,b,i;b = 1;struct node *q = NULL;q = head;printf("\n");printf("请输入要找的元素位置\n");scanf("%d",&a);printf("\n");for (i = 1; i <= a;i++){if (q->a != NULL&&i == a){printf("查找的数据为:");printf("%d\n\n", q->a);b = 0;break;}q = q->next;if (q == NULL) break;}if (b) printf("没有找到你所要位置的数据!\n\n");} void Delete() //删除数据 { int a,b,i; b = 1; struct node *q = NULL ,*q1=NULL; q = head; printf("\n"); printf("请输入你要删除的元素位置\n"); scanf("%d", &a); printf("\n"); for (i = 1; i <= a; i++) { if (a == 1) { q1 = q; head=q->next; free(q1); b = 0; printf("删除成功!\n\n"); break; } if (q->next!= NULL&&i == a-1) { q1 = q->next; q ->next=q1->next; free(q1); b = 0; printf("删除成功!\n\n"); break; } q = q->next; if (q==NULL) break; } if (b) printf("没有找到你所要删除的数据位置!\n\n"); } void insert() // 插入数据 { int a, b,c ,i; b = 1; struct node *q = NULL, *q1 = NULL; q = head; printf("\n"); printf("请输入你要插入的元素位置\n"); scanf("%d", &a); printf("\n"); for (i = 1; i <= a; i++) { if (a == 1) { q1 = (struct node *)malloc(sizeof (struct node)); // q1为结构体指针 指向一个新生成的结构体 printf("请输入要插入的数据!\n"); scanf("%d", &c); printf("\n"); q1->a = c; q1->next = q; head = q1; b = 0; printf("插入成功!\n\n"); break; } if (q->a != NULL&&i == a - 1) { q1 = (struct node *)malloc(sizeof (struct node)); // q1为结构体指针 指向一个新生成的结构体 printf("请输入要插入的数据!\n"); scanf("%d", &c); printf("\n"); q1->a = c; q1->next = q->next; q->next = q1; b = 0; printf("插入成功!\n\n"); break; } q = q->next; if (q == NULL) break; } if (b) printf("无法插入你所要插入的位置!\n\n"); }void print() // 输出处理后所有数据{printf("\n");printf("输出处理后的所有数据\n");while (head != NULL){printf("%d\n", head->a);head = head->next;}}int main(){scan(); // 输入数据find(); // 查找数据Delete(); // 删除数据insert(); // 插入数据print(); // 输出所处理后的所有数据return 0;}
0 0
- 可进行查找删除插入的链表
- 链表的删除,插入,查找,排序
- 链表的插入 删除 查找的实现
- 链表的建立,插入,删除,查找(1)
- 链表的插入删除和查找_C++实现
- 单向链表的操作:创建,删除,插入,销毁,查找
- 实现链表的初始化,按值查找,插入,删除
- 链表的实现(查找,插入,删除)
- 单循环链表的初始化、插入、删除、遍历、查找
- 动态链表的删除 插入 查找操作
- 链表的输入,输出,查找,删除,插入
- C语言---双向链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- 线性链表的查找插入删除算法
- 线性表的插入,删除,合并,查找
- 线性表的插入、查找与删除
- 链表操作 对链表进行输入,插入,删除结点,按关键字进行查找操作 C语言
- 二叉排序树的查找、删除、插入
- 初涉二分图的最大权匹配 KM算法
- JFinal与Qui学习笔记(二)
- java中ExecutorService接口
- Android学习笔记(一)——Android平台简介
- I2C协议
- 可进行查找删除插入的链表
- 数据结构_顺序表
- extern "C"的用法解析
- 短时傅立叶变换、小波变换
- 【算法练习】
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 【日志】2014_04_01 ssh 的小结
- 浅谈REDIS数据库的键值设计
- GUN automake,autoconf写Makefile(一)