1、有序单链表
随机输入n个单字符[无序的],输出升序的结果例如:输入dahkew
输出adehkw
单向链表,实现b'-"h"字符的逆置
#include"head.h"
// vsp xxx
int main(int argc, const char *argv[])
{
linklist *p;
//申请堆空间
p=app_head();
/* linklist_head_insert(p,'a');
linklist_head_insert(p,'c');
linklist_head_insert(p,'b');
*/
linklist_single_char_arrange(p);
linklist_output(p);
}
#ifndef __head_h__
#define __head_h__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct link_list
{
union
{
int len;
char data;
};
// struct link_list *pre;
struct link_list *next;
}linklist;
linklist *app_head();
linklist *app_node(char key);
void linklist_head_insert(linklist *p,char key);
void linklist_output(linklist *p);
void linklist_single_char_arrange(linklist *p);
#endif
#include"head.h"
linklist *app_head()
{
linklist *p;
p=malloc(sizeof(linklist));
if(p==NULL)
printf("失败\n");
p->len=0;
p->next=NULL;
return p;
}
linklist *app_node(char key)
{
linklist *p1;
p1=malloc(sizeof(linklist));
p1->data=key;
p1->next=NULL;
}
void linklist_head_insert(linklist *p,char key)
{
linklist *p1=app_node(key);
p1->next=p->next;
p->next=p1;
p->len++;
}
void linklist_output(linklist *p)
{
printf("test1111\n");
while(p->next)
{
printf("test22222\n");
p=p->next;
printf("%c\n",p->data);
}
}
void linklist_single_char_arrange(linklist *p)
{
linklist *p1;
printf("输入字符串,将进行字符串内容排序\n");
char key[20];
scanf("%s",key);
int char_len=sizeof(key)/sizeof(char);
int i,j;
char temp;
for(i=1;i<char_len;i++)
{
for(j=0;j<char_len-i+1;j++)
{
if(key[j]<key[j+1])
{
temp=key[j];
key[j]=key[j+1];
key[j+1]=temp;
}
}
}
for(i=0;i<char_len;i++)
{
linklist_head_insert(p,key[i]);
}
}