#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct NODE
{
int value;
struct NODE *next;
} Node, *LinkedList;
LinkedList create_linkedlist(int n)
{
LinkedList header;
LinkedList p;
int i = 0;
/*创建头节点*/
header = (LinkedList)malloc(sizeof(Node));
header->value = n;
printf("链表的长度是: %3d\n\n", header->value);
p = header;
p->next = NULL;
srand(time(0));
for(i = 0; i < n; i++)
{
/*创建新的节点*/
LinkedList pn = (LinkedList)malloc(sizeof(Node));
if(!pn)
{
printf("唉,所谓人生...嗯。。。");
/*无法愉快的玩耍了,我走了!^_^....*/
exit(-1);
}
pn->value = rand() % 100 + 1;
p->next = pn;
pn->next = NULL;
p = pn;
}
return header;//header代表了整个链表
}
/*
输出链表而已,测试链表是否创建成功了。
唉..果然..心里还是不踏实啊...
*/
void print_list(LinkedList list)
{
/*
从第一个节点开始遍历
list是指向头结点的指针同时也是指向整个链表的指针。
*/
LinkedList pt = list->next;
int count = 0;
while(pt != NULL)
{
count++;
printf("第%d个节点的值是:%3d\n",count, pt->value);
pt = pt->next;
}
printf("\n");
return;
}
/*
另一种创建链表的方式
List: 指向一个链表指针,此处传入表头地址
size: 节点的个数,不包括头结点
成功返回1,失败就返回0
*/
int
create_sl_2(LinkedList *List, int size)
{
LinkedList p = NULL;
srand(time(0));
int i = 0;
*List = (LinkedList)malloc(sizeof(Node));
if(*List == NULL)
return -1;
(*List)->next = NULL;
for(i = 0; i < size; i++)
{
p = (LinkedList)malloc(sizeof(Node));
if(p == NULL)
return -1;
p->value = rand() % 100 + 1;
p->next = (*List)->next;
(*List)->next = p;
}
}
int main()
{
LinkedList list = NULL;
//list = create_linkedlist(50);
//print_list(list);
if(create_sl_2(&list, 5))
{
printf("创建成功...\n\n");
}else
{
printf("创建失败...\n\n");
}
print_list(list);
return 0;
}
链表
最新推荐文章于 2023-08-30 15:02:34 发布