双向链表较单链表更为复杂,但同时更加灵活,以下是运用双向链表对26个字母的自定义排序,用户输入【-26,26】区间的数字来调整字母的顺序,以下是源代码(本人新手,代码仅供自学和记录):
//双向链表的实践
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node *prior;
struct node *next;
}node;
node* create(char n) {
node* p = NULL, * head;
head = (node*)malloc(sizeof(node));
node* s;
p = head;
for (char i = 'A'; i <= n; i++) {
s = (node*)malloc(sizeof(node));
s->data = i;
s->prior = p;
p->next = s;
p = s;
if (i >= 'Z')
{
s->next = head->next;
s->next->prior = s;
free(head);
return s->next;
}
}
}
int main(void)
{
int i,n=1;
node* s = create('Z');
printf("请输入区间在[-26,26]的数字来对字母进行排序:\n");
scanf("%d", &i);
if (i >= 0 && i <=