建立不带头结点单链表的4种方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Status List_Create3(List *La,int len);
List List_Create4(int len);
void List_Printf(List La);
void List_FreeWithNode(List La);
void List_FreeWithoutNode(List La);
{
printf("请输入链表数据");
scanf("%d",&data);
p=(List)malloc(sizeof(struct node));
if(!p)
{
printf("malloc error");
s=ERROR;
return s;
}
p->data =data;
if(q==NULL)
{
q=p;
s=List_Create3(&header,len);
break;
case 4:
header=List_Create4(len);
break;
default:
printf("错误的选择");
s=ERROR;
return s;
}
printf("\n*********显示单链表数据*********\n");
{
int data,i=0;
List p,q=La;
Status s=SUCCESS;
while(i<len)
{
printf("请输入链表数据");
scanf("%d",&data);
p=(List)malloc(sizeof(struct node));
if(!p)
{
printf("malloc error");
{
free(La);
La=p;
p=La->next ;
}
printf("*********内存释放完毕!*********\n");
}
struct node
{
ElemType data;
struct node *next;
};
typedef struct node *List;
typedef struct node *ptrNode;
Status List_Create(List La,int len);
Status List_Create2(List La,int len);
q=p;
}
else
{
q->next=p;
q=q->next;
}
i++;
}
q->next =NULL;
*La=h;
return s;
}
List List_Create4(int len)
{
int i,data;
List p,q=NULL,header;
for(i=0;i<len;i++)
{
p=(List)malloc(sizeof(struct node));
C语言写的建立不带头结点的单链表的4种方法,前2种有问题,后2种正确。可以帮助学习理解单链表出错的原因和如何建立单链表
#include<stdio.h>
#include<stdlib.h>
#define ElemType int
#define Status int
#define SUCCESS 1
#define ERROR 0
s=ERROR;
return s;
}
p->data =data;
q->next=p;
q=q->next;
i++;
}
return s;
}
Status List_Create2(List La,int len)
{
int data,i=0;
List p,q=La;
Status s=SUCCESS;
while(i<len)
}
else
{
q->next=p;
q=q->next;
}
i++;
}
q->next =NULL;
return s;
}
Status List_Create3(List *La,int len)
{
int data,i=0;
List p,q=NULL,h;
Status s=SUCCESS;
while(i<len)
return header;
}
void List_Printf(List La)
{
List p=La;
while(p)
{
printf("%5d",p->data );
p=p->next;
}
printf("\n");
}
void List_FreeWithNode(List La)
{
ptrNode p=La->next ;
{
printf("请输入链表数据");
scanf("%d",&data);
p=(List)malloc(sizeof(struct node));
if(!p)
{
printf("malloc error");
s=ERROR;
return s;
}
p->data =data;
if(q==NULL)
{
h=p;
printf("1.单链表头指针用函数参数所有结点用相同方式处理\n");
printf("2.单链表头指针用函数参数第一个结点与其他结点处理方式不同\n");
printf("3.单链表头指针用函数参数头指针用二重指针\n");
printf("4.单链表头指针用返回值\n");
}
Status List_Create(List La,int len)
while(p)
{
free(p);
p=La->next;
}
printf("*********内存释放完毕!*********\n");
}
void List_FreeWithoutNode(List La)
{
ptrNode p;
if(La==NULL)
return;
p=La->next;
while(p)
if(!p)
{
printf("malloc error");
return NULL;
}
printf("请输入链表数据");
scanf("%d",&data);
p->data =data;
if(q==NULL)
{
q=p;
header=p;
}
else
{
q->next =p;
q=q->next;
}
}Βιβλιοθήκη Baidu
q->next =NULL;
void DisplayCreateList();
int main()
{
List header=NULL;
int len;
int choose;
Status s=SUCCESS;
printf("\n*********输入链表长度**********\n");
scanf("%d",&len);
do
{
DisplayCreateList();
scanf("%d",&choose);
}while(choose <1 || choose>4);
switch(choose)
{
case 1:
s=List_Create(header,len);
break;
case 2:
s=List_Create2(header,len);
break;
case 3:
List_Printf(header);
printf("\n*********退出程序之前,释放内存*********\n");
List_FreeWithoutNode(header);
getchar();
return s;
}
void DisplayCreateList()
{
printf("\n*********请选择生成不带头结点的单链表的方式*********\n");
相关文档
最新文档