您的位置:首页 > 理论基础 > 数据结构算法

《算法与数据结构》实验课实验三思考题——有序链表插入元素——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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐