Description
依次输入n(n>0)个整数,建立带表头结点的循环单链表,并依次输出单链表中的元素值。
提示:
结点结构如下:
typedef struct Node
{
int data;
struct Node *next;
}LNode,*LinkList;
要求:
(1)编写函数,从键盘输入n个数,建立带头结点的循环单链表。
(2)编写函数,依次输出单链表中每个元素的值。
(3)在main()函数中调用(1)和(2)中的函数实现循环单链表的建立和输出功能。
Input
8
1 2 3 4 5 6 7 8
Output
1 2 3 4 5 6 7 8
Sample Input
8 1 2 3 4 5 6 7 8
Sample Output
1 2 3 4 5 6 7 8
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}LNode,*LinkList;
int length_C=0;
LinkList InitLNode(LNode* pHeader,int len){
int i;
LNode *pNewNode;
pHeader->next=pHeader;
LNode *pCurNode;
pCurNode = pHeader;
for(i=0;i<len;i++)
{
pNewNode = (LNode*)malloc(sizeof(LNode));
scanf("%d",&pNewNode->data);
pCurNode->next = pNewNode;
pCurNode = pNewNode;
}
pCurNode->next = pHeader;
return pHeader;
}
void Display(LNode *pHeader)
{
LNode *pCurNode;
pCurNode=pHeader;
while(pCurNode->next!=pHeader)
{
pCurNode = pCurNode->next;
printf("%d ",pCurNode->data);
}
}
int main()
{
LNode *A;
int length_A;
A = (LNode*)malloc(sizeof(LNode));
scanf("%d",&length_A);
InitLNode(A,length_A);
Display(A);
return 0;
}