#includestdio.h

創(chuàng)新互聯(lián)主營勃利網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,勃利h5微信小程序定制開發(fā)搭建,勃利網(wǎng)站營銷推廣歡迎勃利等地區(qū)企業(yè)咨詢
#includestdlib.h
typedef struct data?{?int number;?struct data *next;?} DATA;
int main()?{?int n;?DATA *head,*p;
printf("how many?\n"); scanf("%d",n); head=create(n); printf("there is all\n");
while ( head!=NULL ) { printf("%d ",head-number); head=head-next; } printf("\n");
while ( head!=NULL ) {?p=head; head=head-next; free(p); }
return 0;
}
DATA *create(int n)?{?DATA *head=NULL,*t=NULL,*tial=NULL;?int i;
printf("let's create it\n");?head=(DATA*)malloc(sizeof(DATA));
if ( !head )?{?printf("error"); return NULL;?}
head-next=NULL;?printf("enter your data\n");? scanf("%d",head-number);
for ( i=1,tial=head;in;i++ )?{
t=(DATA*)malloc(sizeof(DATA));?if ( !t )?{?printf("error"); return head; }
scanf("%d",t-number);?t-next=NULL; tial-next=t;?tial=t;
}
return head;
}
主函數(shù)這里
Linklist?List;
printf("輸入創(chuàng)建鏈表的長度:");
scanf("%d",num);
CreateList_H(List,num); //創(chuàng)建鏈表
改為?
LNode?List;
printf("輸入創(chuàng)建鏈表的長度:");
scanf("%d",num);
CreateList_H(List,num); //創(chuàng)建鏈表
函數(shù)內(nèi)在堆上分配好內(nèi)存,但是 沒有傳遞到棧上
另外?你的變量名很迷人
#includestdio.h
#includestdlib.h
//鏈表定義
typedef int ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
/*************************************
* 鏈表函數(shù) *
*************************************/
//鏈表初始化
void InitLink(LinkList L);
//創(chuàng)建函數(shù),尾插法
void CreateLink_T(LinkList L,int n);
//創(chuàng)建函數(shù),頭插法
void CreateLink_H(LinkList L,int n);
//銷毀函數(shù)
void DestroyLink(LinkList L);
//判斷是否為空函數(shù)
bool EmptyLink(LinkList L);
//獲取函數(shù)
bool GetLink(LinkList L,int i,int e);
//插入函數(shù)
void InsertLink(LinkList L,int i,int e);
//刪除函數(shù)
void DeleteLink(LinkList L,int i,int e);
//遍歷函數(shù)
void TraverseLink(LinkList L);
//鏈表長度函數(shù)
int LengthLink(LinkList L);
//合并函數(shù)
void MergeLink(LinkList L1,LinkList L2);
void main()
{
LinkList L1,L2;
InitLink(L1);
InitLink(L2);
CreateLink_H(L1,2);
CreateLink_T(L2,2);
TraverseLink(L1);
printf("\n");
TraverseLink(L2);
printf("\n");
MergeLink(L1,L2);
TraverseLink(L1);
TraverseLink(L2);
}
//創(chuàng)建函數(shù),尾插法
void InitLink(LinkList L)
{
L=(LinkList)malloc(sizeof(LNode));
if (!L)
{
printf("Init error\n");
return;
}
L-next=NULL;
}
void CreateLink_T(LinkList L,int n)
{
if(n1)
{
printf("n must =1\n");
return ;
}
else
{
// L=(LinkList)malloc(sizeof(LNode));
L-next=NULL;
for(int i=0;in;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));// the lower letter p
printf("enter the data :\t");
scanf("%d",(p-data));
p-next=L-next;
L-next=p;
}
}
}
//創(chuàng)建函數(shù),頭插法
void CreateLink_H(LinkList L,int n)
{
if (n1)
{
printf("n must =1\n ");
return;
}
else
{
//L=(LinkList)malloc(sizeof(LNode));
LinkList pre=(LinkList)malloc(sizeof(LNode));
L-next=NULL;
pre=L;
for(int i=0;in;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));
printf("enter the data:\t");
scanf("%d",(p-data));
pre-next=p;
pre=p;
}
pre-next=NULL;
}
}
//銷毀函數(shù)
void DestroyLink(LinkList L)
{
LinkList q=L,p=L;
while (p)
{
q=p;
p=p-next;
free(q);
}
L-next=NULL;
}
//判斷是否為空函數(shù)
bool EmptyLink(LinkList L)
{
if (NULL==L-next)
{
return true;
}
else
{
return false;
}
}
//獲取函數(shù)
bool GetLink(LinkList L,int i,int e)
{
if (i1)
{
return false;
}
else
{
if (EmptyLink(L))
{
return false;
}
LinkList p=L-next;
int j=1;
while(pji)
{
p=p-next;
j++;
}
if (!p||ji)
{
return false;
}
else
{
e=p-data;
return true;
}
}
}
//插入函數(shù)
void InsertLink(LinkList L,int i,int e)
{
if (i0||iLengthLink(L))
{
printf("Insert error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(p(ji))
{
p=p-next;
j++;
}
if (!p||ji)
{
printf("Insert error\n");
return;
}
else
{
LinkList q=(LinkList)malloc(sizeof(LNode));
q-data=e;
q-next=p-next;
p-next=q;
}
}
}
//刪除函數(shù)
void DeleteLink(LinkList L,int i,int e)
{
if(i=0||iLengthLink(L))
{
printf("delete error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(pji-1)
{
p=p-next;
j++;
}
if(!p||ji)
{
printf("please enter i again\n");
return;
}
else
{
LinkList q=p-next;
e=p-next-data;
p-next=p-next-next;
free(q);
}
}
}
//遍歷函數(shù)
void TraverseLink(LinkList L)
{
LinkList p=L-next;
if(!p)
{
printf("the Link L is empty\n");
}
while(p)
{
printf("%d\n",p-data);
p=p-next;
}
}
//鏈表長度函數(shù)
int LengthLink(LinkList L)
{
int i=0;
LinkList p=L-next;
while(p)
{
p=p-next;
i++;
}
return i;
}
//合并函數(shù)
void MergeLink(LinkList L1,LinkList L2)
{
int i=0,flag=0;
LinkList p1=L1-next,p2=L2-next;
LinkList p=(LinkList)malloc ((LengthLink(L1)+LengthLink(L2)+2)*sizeof(LNode));
LinkList pre=p;
if (!p)
{
printf("MergeLink error\n");
return;
}
p-next=NULL;
while (p1p2)
{
if (p1-data=p2-data)
{
InsertLink(p,i++,p2-data);
p2=p2-next;
}
else
{
InsertLink(p,i++,p1-data);
p1=p1-next;
}
}
while (p1)
{
InsertLink(p,i++,p1-data);
p1=p1-next;
}
while(p2)
{
InsertLink(p,i++,p2-data);
p2=p2-next;
}
while(pre)
{
pre=pre-next;
}
LinkList q=L1;
L1=p;
DestroyLink(q);
DestroyLink(L2);
}
分享名稱:c語言函數(shù)創(chuàng)建鏈表,c語言如何創(chuàng)建鏈表
文章轉(zhuǎn)載:http://chinadenli.net/article12/dsioogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、App設(shè)計(jì)、微信公眾號(hào)、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)