#include<stdio.h>
#include<stdlib.h>
typedef int TypeElem;
// 单循环链表
typedef struct NODE
{
TypeElem data;
struct NODE *next;
}* LinkList, Node;
// 初始化
LinkList createList()
{
LinkList L;
L = (LinkList) malloc(sizeof(Node));
if(L == NULL)
{
printf("创建头结点失败\n");
exit(-1);
}
L->next = L;
return L;
}
// 尾插法
void tailInsert(LinkList L, int n)
{
LinkList p = L, q;
if(L == NULL){
printf("链表为空");
exit(-1);
}
while(p->next != L)
p = p->next;
for(int i = 1; i <= n; i++)
{
q = (LinkList) malloc(sizeof(Node));
scanf("%d", &(q->data));
p->next = q;
q->next = L;
p = q;
}
}
// 头插法
void headInsert(LinkList L, int n)
{
LinkList q;
if(L == NULL){
printf("链表为空");
exit(-1);
}
for(int i = 1; i <= n; i++)
{
q = (LinkList) malloc(sizeof(Node));
scanf("%d", &(q->data));
q->next = L->next;
L->next = q;
}
}
// 遍历单循环链表
void traverse(LinkList L)
{
LinkList p = L->next;
while(p != L)
{
printf("%d ", p->data);
p = p->next;
}
}
int main()
{
LinkList L = createList();
headInsert(L, 3);
tailInsert(L, 3);
traverse(L);
return 0;
}
参考: