000-- define a Dulinklist
A empty DuLinklist:
typedef struct DualNode{ ElemType data; struct DualNode *prior; struct DualNode *next; }DualNode, *DuLinkList;
- Add a new Node
s->next = p; s->prior = p->prior; p->prior->next = s; p->prior = s;
- Delete a Node
p->prior->next = p->next;p->next->prior = p->prior; free(p);
print A-Z with the defined sequence by user
e.g. user input 3
then should be DEFG....ZABC
user input -3
then should be XYZABCEFG.....W
#define OK 1;#define ERROR 0;typedef char ElemType;typedef int Status;typedef struct DualNode;{ ElemType data; struct DualNode *prior; struct DualNode *next; }DualNode, *DuLinkList;Status InitList(DuLinkList *L){ DualNode *p,*q; int i; *L = (DuLinkList)malloc(sizeof(DualNode)); if(!(*L)) return ERROR; (*L)->next = (*L)->prior = NULL; p = (*L); for(i=0;i<26;i++) { q = (DualNode *)malloc(sizeof(DualNode)); if(!q) return ERROR; q->data = 'A'+i; q->prior = p; q->next = p->next; p->next = q; p=q; } p->next = (*L)->next; //the last Node points to the first Node (*L)->next->prior = p; //set the first Node with data 'A' as head Node return OK;}void caser(DuLinkList *L, int i){ if(i>0) { do{ (*L) = (*L)->next; } while(--i); } if(i>0) { i = i-1; (*L)=(*L)->next; do{ (*L) = (*L)->prior; }while (++i); } }int main(){ DuLinkList L; int i n; InitList(&L); printf("Please input a integer: \n"); scanf("%d", &n); printf("\n"); caser(&L,n); for(i=0;i<26;i++) { L = L->next; printf("%c", L->data); } printf("\n"); return 0;}