Ptr List_Create(int n){
Ptr head;/*头结点指针*/
head =(Ptr)malloc(sizeof(Node));/*创建头结点并给头结点分配空间*/
head->next =NULL;int i =0;
Ptr q = head;/*定义头指针指向头结点*/
Ptr p;/*用于指向新生成的结点,注意实际的结点不是p,而是p所指向的结构体*/for(i =0; i < n;i++){
p =(Ptr)malloc(sizeof(Node));scanf_s("%d",&(p->elem),1);
q->next = p;/*第一次让头指针与新生成的结点连接起来*/
q = p;/*让新的结点成为下一个头结点,依次类推,形成链表*/}return head;/*返回头结点的指针*/}
测试函数
#include<stdio.h>#include<stdlib.h>#include"SqList.h"intmain(){int n =0, i =0;
Ptr L;printf("请输入要创建的链表的长度\n");scanf_s("%d",&n,1);/*输入需要创建链表的长度*/printf("请输入数据元素\n");
L =List_Create(n);/*创建链表*/for(i =0; i < n; i++){printf("%d,", L->next->elem);/*L为指针的指针,所以需要访问两次才可得到数据元素*/
L = L->next;/*每次访问完,指针跳到下一个结点进行访问*/}return0;}