尾指针循环单链表

#include//stdio.h效果一样
#include
#include
#include
typedef char Elemtype;
typedef struct Node {Elemtype data;struct Node *next;
}Node, *TailLinkList;//初始化带头结点、尾指针的循环单链表
void InitTailLinkList(TailLinkList *L)
{*L = (TailLinkList)malloc(sizeof(Node));if (!(*L)) {printf("Cannot allocate memory");exit(1);//需要cstdlib或者stdlib.h}(*L)->next = *L;
}//创建
void CreateTailLinkList(TailLinkList *L)
{Node *tail = (*L), *s;printf("Tail LinkList Creating:\n");char ch = getchar();while (ch != '$') {s = (Node*)malloc(sizeof(Node));if (!s) {printf("Cannot allocate ");exit(1);}s->data = ch;tail->next = s;s->next = *L;tail = s;ch = getchar();}*L = tail;
}//链接
TailLinkList MergeTailLinkList(TailLinkList LA, TailLinkList LB)
{Node *temp1, *temp2;temp1 = LA->next;temp2 = LB->next;LA->next = LB->next->next;free(temp2);LB->next = temp1;return LB;
}//展示内容
void DisplayTailLinkList(TailLinkList L)
{Node *p = L->next->next;printf("The list is:\n");while (p != L->next) {printf("%c", p->data);p = p->next;}printf("\n");
}int main()
{TailLinkList tl1, tl2;InitTailLinkList(&tl1);InitTailLinkList(&tl2);CreateTailLinkList(&tl1);getchar();//吸收掉回车换行CreateTailLinkList(&tl2);DisplayTailLinkList(tl1);DisplayTailLinkList(tl2);TailLinkList tl3 = MergeTailLinkList(tl1, tl2);printf("The Merge List is : \n");DisplayTailLinkList(tl3);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部