- /*
- 单链表整表创建算法思路
- 1.声明一结点p和计数器变量i
- 2.初始化一空链表L
- 3.让L的头结点的指针指向NULL,即建立一个带头结点的单链表
- 4.循环:
- 生成一新结点赋值给p
- 随机生成一数字赋值给p的数据域p->data
- 将p插入到头结点与前一新结点之间
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define DATATYPE char
- typedef struct Node
- {
- DATATYPE data;
- struct Node *next;
- }LINKLIST;
- //尾插法创建循环单链表,执行输入:abcd1234回车,就创建8个数据节点
- LINKLIST *RearCreateLinkList()
- {
- LINKLIST *LinkList_Head,*LinkList_Point,*LinkList_Rear;
- char InputChar;
- LinkList_Head = (LINKLIST *)malloc(sizeof(LINKLIST));
- LinkList_Rear = LinkList_Head;
- puts("Please input the linklist' data: ");
- InputChar = getchar();
- while(InputChar != '\n')
- {
- LinkList_Point = (LINKLIST *)malloc(sizeof(LINKLIST));
- LinkList_Point->data = InputChar;
- LinkList_Rear->next = LinkList_Point;
- LinkList_Rear = LinkList_Point;
- InputChar = getchar();
- }
- LinkList_Rear->next = LinkList_Head;
- return(LinkList_Rear);
- }
- /*遍历循环链表,显示出每个节点data域*/
- void LinkListPrint(LINKLIST *LinkList_Rear)
- {
- LINKLIST *List_Point,*LinkList_Head;
- LinkList_Head = LinkList_Rear->next;
- if(LinkList_Head == LinkList_Rear)
- {
- printf("\n链表为空!\n");
- return;
- }
- List_Point = LinkList_Head->next;
- puts("遍历节点:");
- while(List_Point != LinkList_Head)
- {
- printf("%c ",List_Point->data);
- List_Point=List_Point->next;
- }
- puts("");
- /* 暂停,也可以使用system("pause"); */
- getchar();
- }
- int main()
- {
- LINKLIST *LinkList_Rear_1;
- /*尾插法创建循环单链表*/
- LinkList_Rear_1=RearCreateLinkList();
- /*打印循环单链表*/
- LinkListPrint(LinkList_Rear_1);
- return 0;
- }
Microsoft Visual C++ 6.0 下运行成功。