单链表的操作(练习)
来源:互联网 发布:微信网络推广策划 编辑:程序博客网 时间:2024/05/20 11:24
/** * This c Project just for test * 链表操作、排序 * author :pointer * date:2015-12-22 */#include <stdio.h>#include <stdlib.h>typedef struct _Simple_link {int data;struct _simple_link * next;} single_link, *Sing_link;single_link *create_Link();int insert_link(single_link *head, int valude);void print_link(single_link *head);single_link* delete_link(single_link *head, int position);int length_link(single_link* head);single_link *reverse_link(single_link *head);void bubble_sort(int a[], int len);int main() {int i = 0;int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };bubble_sort(a, 10);single_link *head = NULL;single_link *temp_head = NULL;head = create_Link();for (i = 0; i < 10; i++) {insert_link(head, a[i]);}print_link(head);head = delete_link(head, 9);print_link(head);temp_head = reverse_link(head);print_link(temp_head);printf("Press any key to continue...\n");getchar();return 0;}//creat a link headsingle_link *create_Link() {single_link *head = NULL;head = (single_link*) malloc(sizeof(single_link));if (head == NULL) {printf("创建失败");return NULL;}head->data = 0;head->next = NULL;return head;}//插入int insert_link(single_link *head, int value) {single_link* temp = NULL;if (NULL == head) {return 0;}temp = (single_link*) malloc(sizeof(single_link));if (NULL == temp) {printf("创建失败");return 0;}while (head->next != NULL) {head = head->next;}temp->data = value;temp->next = NULL;head->next = temp;return 1;}//遍历void print_link(single_link *head) {if (head == NULL || head->next == NULL) {printf("请输入正确的链表\n");}single_link* temp_head = NULL;temp_head = head->next;printf("链表的值为:");while (temp_head->next != NULL) {printf("%d\t", temp_head->data);temp_head = temp_head->next;}printf("%d\n", temp_head->data);//printf("\n");}//计算链表的长度int length_link(single_link* head) {if (head == NULL) {printf("请输入正确的链表\n");return 0;}int i = 0;while (head->next != NULL) {head = head->next;i++;}return i;}//删除指定位置的元素single_link* delete_link(single_link *head, int position) {if (head == NULL) {printf("请输入正确的链表\n");return NULL;}int index = 0;single_link* temp = NULL;single_link* temp_head = head;if (position <= length_link(head)) {while (index < position - 2) {index++;head = head->next;}temp = head;head = head->next;printf("删除位置元素:%d\t %d\n", position, head->data);temp->next = head->next;free(head);return temp_head;} else {printf("输入的长度无效\n");return NULL;}}single_link *reverse_link(single_link *head) {if (head == NULL) {printf("请输入正确的链表\n");return NULL;}single_link* temp_next = NULL;single_link* temp_head = NULL;temp_head = head->next;head->next = NULL;while (temp_head->next != NULL) {temp_next = temp_head->next;temp_head->next = head;head = temp_head;temp_head = temp_next;}temp_head->next = head;head = temp_head;return head;}//冒泡排序void bubble_sort(int a[], int len) {int inner_index, wild_index;int temp;for (wild_index = 0; wild_index < len; wild_index++) {for (inner_index = wild_index + 1; inner_index < len; inner_index++) {if (a[inner_index] > a[wild_index]) {temp = a[inner_index];a[inner_index] = a[wild_index];a[wild_index] = temp;}}}printf("排序后的值为:");for (wild_index = 0; wild_index < len; wild_index++) {printf("%d\t", a[wild_index]);}printf("\n");}
0 0
- 单链表的操作(练习)
- 单链表的操作练习
- 位操作的练习
- 【练习】单链表基本操作
- 字符串的操作 练习三
- 字符串的操作 练习四
- 文件读取的操作练习
- dom4j操作xml的练习
- 练习TinyXml的写操作
- 练习1- 按钮的操作
- vector一些操作的练习
- DOM表单的练习操作
- 数据库操作的作业练习
- 位图的像素操作练习(2012-05-25)
- sql server的查询操作练习(知识点)
- find命令的操作练习(配截图)
- C++单链表基本操作练习
- 字符串的操作 练习一和练习二
- SQL Server索引的介绍及应用
- 144,运算符简述
- Go lang学习
- 几个有用的python脚本
- JAVA环境配置
- 单链表的操作(练习)
- 控制器管理
- Mosquitto support websocket
- gridview and listview
- Tomcat 一闪而过
- 一个加密解密的小工具
- SQLite数据库创建、更新入门
- 如何对配置eclipse,让他能够用来开发Android
- VC++关键字-"__declspec"