欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

單鏈表的初始化函數(shù)c語言,C語言單鏈表定義

關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)單鏈表初始化的問題

其實這是一個與C語言參數(shù)傳值的問題,C語言規(guī)定實參變量對形參變量的參數(shù)傳遞是值傳遞,在執(zhí)行函數(shù)調(diào)用時形參變量值的改變,并不影響主調(diào)函數(shù)的實參變量。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作與策劃設(shè)計,安溪網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安溪等地區(qū)。安溪做網(wǎng)站價格咨詢:18982081108

如:int x,y;

void fun(int a, int b)

{

b=b+a;

}

void main()

{ x=1; y=2;

fun(x, y);

.....

//此時仍然x=1; y=2;

}

但是,函數(shù)寫成如下形式

void InitList(LinkList *head);可以實現(xiàn)引用傳遞參數(shù)的功能。

在需要函數(shù)內(nèi)部修改鏈表頭指針時,用該形式可以解決該問題。

而void InitList(LinkList head) 不可以在函數(shù)內(nèi)部修改鏈表頭指針。

c語言用函數(shù)創(chuàng)建單鏈表

#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ù)據(jù)結(jié)構(gòu)單鏈表初始化

你說的那個是逆序建立n個節(jié)點的鏈表,建完頭結(jié)點后由于鏈表中沒有其他節(jié)點就把頭結(jié)點的next置為空,這一點如果不明白的話去看鏈表那一章,有介紹!!!

之后從后往前建立鏈表!!剛開始是L-next?=NULL

要注意p是每次新建的節(jié)點,這樣從后往前以此建立鏈表,只要明白p是每次新建的節(jié)點,和從后往前建立,就會明白的!!給你花了張圖!!

C語言初始化單鏈表!

在單

鏈表

A中刪除所有和

單鏈表

B中元素相同的結(jié)點

#include

"stdafx.h"

#include

stdio.h

#include

malloc.h

#define

SIZE

sizeof(struct

node)

struct

node{

int

data;

struct

node

*next;

};

void

init(struct

node

*LC){

int

n;

struct

node

*Str,*p;

p=(struct

node

*)malloc(SIZE);

Str=LC;

printf("請輸入鏈表A,以小于零的數(shù)結(jié)束輸入:\n");

scanf("%d",n);

while(n=0){

p-data=n;

Str-next=p;

Str=p;

p=(struct

node

*)malloc(SIZE);

scanf("%d",n);

Str-next=NULL;

}

printf("您輸入的序列的是:\n");

for

(Str=LC-next;Str!=NULL;){

printf("%d

",Str-data);

Str=Str-next;

}

printf("\n");

}

void

delet_LA(struct

node

*LA,struct

node

*pa){

struct

node

*p;

struct

node

*q;

p=LA;

q=p;

for

(p;p!=pa;){

q=p;

p=p-next;

}

q-next=pa-next;

}

void

delete_same(struct

node

*LA,struct

node

*LB){

struct

node

*pa,*pb;

pa=LA-next;

pb=LB-next;

for

(pb;pb!=NULL;){

for

(pa;pa!=NULL;){

if

(pb-data==pa-data){

delet_LA(LA,pa);

pa=LA-next;

}

else{

pa=pa-next;

}

}

pb=pb-next;

pa=LA-next;

}

printf("處理后的單鏈表A為:\n");

for

(pa=LA-next;pa!=NULL;){

printf("%d

",pa-data);

pa=pa-next;

}

}

void

main(){

struct

node

*LA;

struct

node

*LB;

LA=(struct

node

*)malloc(SIZE);

if(LA!=NULL)

LA-data=-1;

LB=(struct

node

*)malloc(SIZE);

if(LB!=NULL)

LB-data=-1;

init(LA);

init(LB);

delete_same(LA,LB);

}

當(dāng)前標(biāo)題:單鏈表的初始化函數(shù)c語言,C語言單鏈表定義
轉(zhuǎn)載來源:http://chinadenli.net/article36/hescpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)建站公司服務(wù)器托管全網(wǎng)營銷推廣網(wǎng)站建設(shè)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)