《算法与数据结构》实验课实验三思考题——有序链表插入元素——C语言
2014-04-25 21:14
295 查看
#include <stdio.h> #include <malloc.h> #define DATATYPE2 char #define MAXSIZE 100 typedef struct node{ DATATYPE2 data; struct node *next; }LINKLIST; int count_head(LINKLIST *head){ //Single head node list:Output single list element value and count int i=0; LINKLIST *p; p = head->next; printf("Output single list's element:"); while(p != NULL){ printf(" %c",p->data); i++; p = p->next; } printf("\n"); return i; } LINKLIST *creatlink_head_head(LINKLIST *head){ //use toucharufa built single list with head node 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); } LINKLIST *insert(LINKLIST *head,char n){ int c=0; 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); } main(){ LINKLIST *head = NULL; int num; char n; printf("\n Build single list:\n\n"); head = creatlink_head_head(head); fflush(stdin); sort(head); printf("Enter the element that you want to insert:"); scanf("%c",&n); insert(head,n); num = count_head(head); printf("Single list element's number = %d\n",num); }
相关文章推荐
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- C语言 链表 数据结构实验之链表四:有序链表的归并
- 链表的创建、元素插入、元素删除、以及两个有序链表的归并
- 有序链表插入与删除——C语言
- 有序双向链表的插入 C语言实现
- 往有序单循环链表的插入元素使原链表依旧有序
- c语言:顺序表的实现(三)将元素e插入到一个递减有序表中,不改变顺序表的递减有序性。
- 单向循环链表的有序插入 对单向循环链表head插入元素 链表保持有序
- 将两个数组中的元素有序存入到一个链表中(C语言)
- 有序插入建立链表 C语言实现
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- 数据结构实验之链表六:有序链表的建立(C语言)
- C语言——单链表初始化、求表长、读表元素、插入元素
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- 往有序链表的插入元素使原链表依旧有序
- C语言 链表 数据结构实验之链表七:单链表中重复元素的删除
- 单向链表之有序插入节点(C语言实现)
- C语言实现链表之单向链表(九)在任意位置插入结点
- 数据结构实验之链表七:单链表中重复元素的删除
- C语言实验——矩阵下三角元素之和