|  | 
 
5鱼币 
| #include<stdio.h> #include<stdlib.h>
 #pragma warning(disable:4996)
 
 typedef struct ListNode
 {
 struct ListNode* prior;
 char x;
 struct ListNode* next;
 }ListNode;
 
 ListNode* creat()
 {
 ListNode *p, *q, * head;;
 int i;
 p = (ListNode*)malloc(sizeof(ListNode));
 head = p;
 p->next = p->prior = NULL;
 for (i = 0; i < 26; i++)
 {
 q = (ListNode*)malloc(sizeof(ListNode));
 q->x = 'A' + i;
 q->prior = p;
 p->next = q;
 p = q;
 }
 head->next->prior = p;
 return head->next;
 }
 int main()
 {
 ListNode* head = creat();
 ListNode* p;
 int i, b;
 p = head;
 printf("请输入数字 : ");
 b = scanf("%d", &b);
 if (b > 0)
 {
 do
 {
 p = p->next;
 } while (b--);
 for (i = 0; i < 26; i++)
 {
 printf("%c ", p->x);
 p = p->next;
 }
 }
 else
 {
 b = -b;
 do
 {
 p = p->next;
 } while (b--);
 for (i = 0; i < 26; i++)
 {
 printf("%c ", p->x);
 p = p->next;
 }
 }
 
 return 0;
 }
 
 本帖最后由 jhq999 于 2022-3-18 20:47 编辑 
head<->a<->b<->c<->……<->z 
这时候p=z//大概意思 
head->next->prior = p;//a->prior=z 
p->next=head->next;//z->next=a 
free(head);//没用了痛快释放,要不然可能造成内存泄漏 
这样就形成了双向循环链表 
return p->next;//返回a
 | 
 
最佳答案
查看完整内容 headabc……z
这时候p=z//大概意思
head->next->prior = p;//a->prior=z
p->next=head->next;//z->next=a
free(head);//没用了痛快释放,要不然可能造成内存泄漏
这样就形成了双向循环链表
return p->next;//返回a |