#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct Node
{
char data;
struct Node *next;
}Node,*Linklist;
Linklist Creat(Linklist L)
{
char ch;
int flag = 1;
Linklist s, r;
L = (Node*)malloc(sizeof(Node));
L->next = NULL;
r = L;
while(flag)
{
ch = getchar();
if(ch != '\n')
{
s = (Node*)malloc(sizeof(Node));
s->data = ch;
r->next = s;
r = s;
}
else
{
flag = 0;
r->next = NULL;
}
}
return L;
}
Linklist Toucha(Linklist L)
{
Linklist s;
int flag=1;
L=(Linklist)malloc(sizeof(Node));
L->next=NULL;
while(flag) //因为flag是1,所以进入循环体执行
{
char c=getchar(); //假设用户输入ab$,首先读入‘a’
if(c!= '\n') //‘a’不等于‘$’,因此判断成立
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else
return L;
}
}
int print(Linklist La)
{
int i;
Linklist r;
r = La->next;
for(i = 0;;)
{
if(r->next != NULL)
{
printf("%c ", r->data);
r = r->next;
}
else
{
printf("%c", r->data);
break;
}
}
return 0;
}
Linklist combine(Linklist La, Linklist Lb)
{
Linklist r, p,q;
r = (Node*)malloc(sizeof(Node));
r = La;
p = Lb;
for(;r->next !=NULL;r = r->next);
r->next = p->next;
q = La;
for(;q->next != NULL;q = q->next)
{
printf("%c ", q->next->data);
}
}
Linklist paixu(Linklist L)
{
Linklist r, p,s,q;
char t;
r = L;
p = L->next;
for(;p->next !=NULL;r = r->next,p = p->next)
{
for(s = p;s->next !=NULL;s= s->next)
{
if(r->next->data > s->next->data)
{
t = r->next->data;
r->next->data = s->next->data;
s->next->data = t;
}
}
}
q = L;
for(;q->next != NULL;q = q->next)
{
printf("%c ", q->next->data);
}
printf("\n");
}
Linklist Delete(Linklist L, int i)
{
int t = 1;
char w;
Linklist r, p,q,s;
r = L->next;
s = L;
for(;r->next !=NULL;r = r->next)
{
if(t == i)
{
p = r;
s->next = r->next;
w = p->data;
free(p);
break;
}
if(t+1 == i)
{
p = r->next;
r->next = p->next;
w = p->data;
free(p);
break;
}
else
{
t=t+1;
}
}
q = L;
print(q);
return w;
}
Linklist Delete2(Linklist L, char n)
{
Linklist r, p,q,s;
r = L->next;
s = L;
for(;r->next !=NULL;r = r->next)
{
if(r->next->data == n)
{
p = r->next;
r->next = p->next;
free(p);
break;
}
if(r->data == n)
{
p = r;
s->next = r->next;
free(r);
break;
}
}
q = L;
print(q);
}
Linklist Insert(Linklist L, int i, char n)
{
int t = 1;
Linklist r, p,q,s;
r = L->next;
s = L;
for(;r->next !=NULL;r = r->next)
{
if(t == i)
{
p = (Node*)malloc(sizeof(Node));
p->data = n;
s->next = p;
p->next = r;
break;
}
if(t+1 == i)
{
p = (Node*)malloc(sizeof(Node));
p->next = NULL;
p->data = n;
p->next = r->next;
r->next = p;
break;
}
else
{
t=t+1;
}
}
q = L;
print(q);
}
Linklist Length(Linklist L)
{
int number = 0;
Linklist r;
r = L;
for(;r->next != NULL;r = r->next)
{
number++;
}
printf("链表的长度是:%d\n", number);
}
Linklist Find(Linklist L, int i)
{
int t = 1;
Linklist r;
r = L->next;
for(;r->next !=NULL;r = r->next)
{
if(t==i)
{
printf("序号%d的值为:%c ", i, r->data);
break;
}
else
{
t = t+1;
}
}
}
Linklist Find2(Linklist L, char n)
{
char t = 1;
int number = 1;
Linklist r;
r = L;
for(;r->next !=NULL;r = r->next)
{
if(n==r->next->data)
{
printf("%c的序号为:%d ", n, number);
break;
}
else
{
number++;
}
}
}
Linklist youxuhebing(Linklist La,Linklist Lb)
{
Linklist r, p,q;
r = (Node*)malloc(sizeof(Node));
r = La;
p = Lb;
for(;r->next !=NULL;r = r->next);
r->next = p->next;
q = La;
paixu(La);
}
int main()
{
int i;
char n, w;
Linklist La,Lb;
//La = Creat(La);
La = Toucha(La);
// scanf("%d", &i );
// scanf("%c", &n );
//Find2(La, n);
// scanf("%d %c", &i ,&n);
// Lb = Creat(Lb);
print(La);
//print(Lb);
//combine(La, Lb);
//paixu(La);
//paixu(Lb);
// w = Delete(La, i);
// printf("\n删除的值为:%c\n", w);
//Delete2(La, n);
//Insert(La, i, n);
//Length(La);
// youxuhebing(La, Lb);
return 0;
}
链表调通
最新推荐文章于 2023-11-05 05:08:25 发布