有序链表插入与删除——C语言
2014-04-25 23:18
357 查看
#include <stdio.h> #include <malloc.h> #define DATATYPE2 char #define MAXSIZE 100 typedef struct node { DATATYPE2 data; struct node *next; } LINKLIST; //output void output_head(LINKLIST *head) { LINKLIST *p; for (p = head->next; p != NULL; p = p->next) { printf(" %c", p->data); } printf("\n"); } //use toucharufa built single list with head node LINKLIST *creatlink_head_head(LINKLIST *head) { LINKLIST *t; char ch; t = (LINKLIST*) malloc(sizeof (LINKLIST)); head = t; t->next = NULL; printf("single,lianxu,end with $:"); while ((ch = getchar()) != '$') { t = (LINKLIST*) malloc(sizeof (LINKLIST)); t->data = ch; t->next = head->next; head->next = t; } return (head); } //sort LINKLIST sort(LINKLIST *sl) { LINKLIST *p, *q; int temp; for (p = sl; p != NULL; p = p->next) { for (q = p->next; q != NULL; q = q->next) { if (p->data > q->data) { temp = q->data; q->data = p->data; p->data = temp; } } } return (*sl); } //insert LINKLIST *insert(LINKLIST *head) { int c = 0; char n; printf("Enter the element that you want to insert:"); scanf("%c", &n); LINKLIST*p; p = (LINKLIST*) malloc(sizeof (LINKLIST)); LINKLIST*t; t = (LINKLIST*) malloc(sizeof (LINKLIST)); LINKLIST*r; r = (LINKLIST*) malloc(sizeof (LINKLIST)); p = head->next; t = p; r = p; LINKLIST*s; s = (LINKLIST*) malloc(sizeof (LINKLIST)); while (n > t->data) { p = p->next; t = p->next; c++; } if (c == 1) { s->data = n; s->next = r->next; r->next = s; } else { s->data = n; s->next = p->next; p->next = s; } return (head); } //delete LINKLIST *dele(LINKLIST *head) { LINKLIST*p; char n; printf("plase input dele a value\n"); scanf("%c", &n); for (p = head; p->next != NULL; p = p->next) { if (p->next->data == n) { p->next = p->next->next; } if (p->next == NULL) break; } return (head); } main() { LINKLIST *head = NULL; LINKLIST *p = head; int choose; printf("\n Build single list:\n\n"); head = creatlink_head_head(head); fflush(stdin); sort(head); printf("Output single list element's value:"); output_head(head); while (1) { printf("Please select the operating:"); printf("1:Insert 2:Delete\nYour choose:"); scanf("%d", &choose); fflush(stdin); if (choose == 1) { insert(head); break; } else if (choose == 2) { dele(head); break; } else { printf("Please enter the correat choose!"); } } printf("Output new single list element's value:"); output_head(head); }
相关文章推荐
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- c语言 单链表的插入与删除
- 链表的建立,输出,删除,插入运算的c语言实现
- C语言:动态链表的建立,查找,删除,插入功能的实现
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- c语言实现单链表建立,插入,删除,查找,循环链表,静态链表
- c语言数据结构分析2之 链表插入删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言实现链表节点的插入和删除
- C语言各种链表操作(创建、打印、删除、插入、反转)
- C语言单向链表:获取&&删除&&插入#ShadowFox个人作品
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- (C语言)链表的创建、遍历、插入和删除
- 将一个值插入到有序的单链表,实现插入、删除、输出等基本操作
- C语言---双向链表的插入、删除、查找操作
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 关于有序链表插入删除(内核源码)
- C语言 有序双链表实现插入、删除、打印(正反)等简单操作
- 《算法与数据结构》实验课实验三思考题——有序链表插入元素——C语言