|
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
|