您的位置:首页 > 理论基础 > 数据结构算法

数据结构之单链表尾插法创建-RearCreate 推荐

2012-10-15 10:09 357 查看
/*
单链表整表创建算法思路
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 下运行成功。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息