欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c語(yǔ)言如何用函數(shù)創(chuàng)建鏈表 c語(yǔ)言創(chuàng)建鏈表每一步詳解

c語(yǔ)言創(chuàng)建鏈表?

#includestdio.h

創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為木壘哈薩克企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),木壘哈薩克網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

#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;

}

如何用C語(yǔ)言創(chuàng)建一個(gè)鏈表,實(shí)現(xiàn)增、刪、改、查?

#include\x0d\x0a#include\x0d\x0a#include \x0d\x0a//先定義一種student類型,表示一個(gè)學(xué)生的信息,如下:\x0d\x0atypedef struct student\x0d\x0a{\x0d\x0aint num; //表示學(xué)號(hào)\x0d\x0achar name[30]; //表示姓名\x0d\x0afloat score; //表示分?jǐn)?shù)\x0d\x0a}student;\x0d\x0a//定義一種NODE類型,表示一個(gè)結(jié)點(diǎn)信息,如下:\x0d\x0atypedef struct node\x0d\x0a{\x0d\x0astudent st; //表示一個(gè)學(xué)生的信息\x0d\x0astruct node *next; //表示一個(gè)NODE類型的指針\x0d\x0a}NODE;\x0d\x0a//1、寫出建立一個(gè)帶頭結(jié)點(diǎn)的線性鏈表的函數(shù),其中每個(gè)結(jié)點(diǎn)包括學(xué)號(hào)、姓名、分?jǐn)?shù)三個(gè)數(shù)據(jù)域。函數(shù)形式如下:\x0d\x0aNODE *creat_link(int direction)\x0d\x0a{\x0d\x0aNODE *head,*p,*tail;\x0d\x0aint xh,i=1;\x0d\x0aif(direction==1) //當(dāng)direction的值為1時(shí),新建立的結(jié)點(diǎn)連到尾部\x0d\x0a{\x0d\x0atail=head=(NODE *)malloc(sizeof(NODE));\x0d\x0ahead-next=NULL;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i);\x0d\x0ascanf("%d",xh);\x0d\x0awhile(xh0) //從鍵盤臨時(shí)輸入學(xué)生情況,當(dāng)輸入的學(xué)號(hào)非正,則鏈表建立完畢\x0d\x0a{\x0d\x0ap=(NODE *)malloc(sizeof(NODE));\x0d\x0ap-st.num=xh;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的姓名:",i);\x0d\x0ascanf("%s",p-st.name);\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的成績(jī):",i);\x0d\x0ascanf("%f",p-st.score);\x0d\x0ap-next=NULL;\x0d\x0atail-next=p;\x0d\x0atail=p;\x0d\x0ai=i+1;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i);\x0d\x0ascanf("%d",xh);\x0d\x0a}\x0d\x0a}\x0d\x0aelse if(direction==0) //當(dāng)direction為0時(shí),新建立的結(jié)點(diǎn)成為第一個(gè)結(jié)點(diǎn)\x0d\x0a{\x0d\x0ahead=(NODE *)malloc(sizeof(NODE));\x0d\x0ahead-next=NULL;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i);\x0d\x0ascanf("%d",xh);\x0d\x0awhile(xh0) //從鍵盤臨時(shí)輸入學(xué)生情況,當(dāng)輸入的學(xué)號(hào)非正,則鏈表建立完畢\x0d\x0a{\x0d\x0ap=(NODE *)malloc(sizeof(NODE));\x0d\x0ap-st.num=xh;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的姓名:",i);\x0d\x0ascanf("%s",p-st.name);\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的成績(jī):",i);\x0d\x0ascanf("%f",p-st.score);\x0d\x0ap-next=head-next;\x0d\x0ahead-next=p;\x0d\x0ai=i+1;\x0d\x0aprintf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):",i);\x0d\x0ascanf("%d",xh);\x0d\x0a}\x0d\x0a}\x0d\x0areturn head;\x0d\x0a}\x0d\x0a//2、寫出輸出上述鏈表各結(jié)點(diǎn)數(shù)據(jù)域值的函數(shù)。該函數(shù)對(duì)應(yīng)的函數(shù)需要一個(gè)形參,表示鏈表的頭指針,形式如下:\x0d\x0avoid print_link(NODE *head)\x0d\x0a{\x0d\x0aNODE *p;\x0d\x0ap=head-next;\x0d\x0aprintf("%-10s%-20s%-10s\n","學(xué)號(hào)","姓名","分?jǐn)?shù)");\x0d\x0awhile(p!=NULL)\x0d\x0a{\x0d\x0aprintf("%-10d%-20s%-10.1f\n",p-st.num,p-st.name,p-st.score);\x0d\x0ap=p-next;\x0d\x0a}\x0d\x0a//該函數(shù)能輸出head所指的鏈表的所有結(jié)點(diǎn)值,輸出形式如下:\x0d\x0a/*本函數(shù)輸出線性表sq中所有數(shù)據(jù),形式如下:\x0d\x0a學(xué)號(hào) 姓名 分?jǐn)?shù)\x0d\x0a12 張三 234.5\x0d\x0a18 李四 987.7\x0d\x0a??? ??? ??.*/\x0d\x0a}\x0d\x0a//3、寫出在鏈表中刪除結(jié)點(diǎn)的函數(shù)\x0d\x0aint del_link(NODE *head,char name[])\x0d\x0a{\x0d\x0aNODE *p,*p1;\x0d\x0ap=head-next;\x0d\x0ap1=head;\x0d\x0awhile(p!=NULL)\x0d\x0a{\x0d\x0aif(strcmp(p-st.name,name)!=0)\x0d\x0a{\x0d\x0ap1=p;\x0d\x0ap=p-next;\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0abreak;\x0d\x0a}\x0d\x0a}\x0d\x0aif(p!=NULL)\x0d\x0a{\x0d\x0ap1-next=p-next;\x0d\x0afree(p);\x0d\x0areturn 1;\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0areturn 0;\x0d\x0a}\x0d\x0a//刪除head所指的鏈表中,名字為name的結(jié)點(diǎn),刪除成功返回1,不成功返回0\x0d\x0a}\x0d\x0a//4、寫出在鏈表中插入結(jié)點(diǎn)的算法\x0d\x0aint insert(NODE *head,student x,int wz)\x0d\x0a{\x0d\x0aNODE *p=head;\x0d\x0aint i=0,jg;\x0d\x0aif(wznext;\x0d\x0a}\x0d\x0aif(p==NULL)\x0d\x0a{\x0d\x0ajg=0;\x0d\x0a}\x0d\x0aif(i=wz-1)\x0d\x0a{\x0d\x0a//找到wz前面的節(jié)點(diǎn),p指向它\x0d\x0aNODE *q;\x0d\x0aq=(NODE *)malloc(sizeof(NODE));\x0d\x0aq-st.num=x.num;\x0d\x0astrcpy(q-st.name,x.name);\x0d\x0aq-st.score=x.score;\x0d\x0aq-next=p-next;\x0d\x0ap-next=q;\x0d\x0ajg=1;\x0d\x0a}\x0d\x0a}\x0d\x0areturn jg;\x0d\x0a//該函數(shù)能夠在wz這個(gè)結(jié)點(diǎn)之前,插入一個(gè)新結(jié)點(diǎn),新結(jié)點(diǎn)的數(shù)據(jù)域?yàn)閤。插入成功返回1,不成功返回0。\x0d\x0a}\x0d\x0a//5、寫出主函數(shù),分別調(diào)用上面算法所對(duì)應(yīng)的程序,建立鏈表,并輸出鏈表的值。\x0d\x0avoid main()\x0d\x0a{\x0d\x0aNODE *head; //定義指針變量head\x0d\x0aint wz; //表示插入位置\x0d\x0achar xm[30];\x0d\x0astudent st; //定義一個(gè)變量st,用來(lái)表示一個(gè)學(xué)生的信息\x0d\x0ahead=creat_link(1);\x0d\x0aprint_link(head); //調(diào)用函數(shù)建立鏈表,并把返回值送給head;\x0d\x0a//調(diào)用函數(shù),輸出鏈表中各個(gè)結(jié)點(diǎn)的值\x0d\x0a//輸入一個(gè)學(xué)生的有關(guān)信息,送給變量st的有關(guān)成員\x0d\x0aprintf("\n\n請(qǐng)輸入要插入的位置:");\x0d\x0ascanf("%d",wz); //輸入wz的值\x0d\x0aprintf("請(qǐng)輸入要插入的學(xué)生的學(xué)號(hào):");\x0d\x0ascanf("%d",st.num);\x0d\x0aprintf("請(qǐng)輸入要插入的學(xué)生的姓名:");\x0d\x0ascanf("%s",st.name);\x0d\x0aprintf("請(qǐng)輸入要插入的學(xué)生的成績(jī):");\x0d\x0ascanf("%f",st.score); \x0d\x0a//調(diào)用函數(shù),在鏈表中把學(xué)生st的值作為一個(gè)結(jié)點(diǎn)插入,如果插入成功,輸出新鏈表\x0d\x0aif(insert(head,st,wz)==1)\x0d\x0a{\x0d\x0aprintf("\n插入成功,新表為:\n");\x0d\x0aprint_link(head);\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0aprintf("插入不成功");\x0d\x0a}\x0d\x0a//調(diào)用函數(shù),在鏈表中刪除一個(gè)指定結(jié)點(diǎn)的值,如果刪除成功,輸出新鏈表\x0d\x0aprintf("\n\n請(qǐng)輸入要?jiǎng)h除的學(xué)生的姓名:");\x0d\x0agetchar();\x0d\x0agets(xm);\x0d\x0aif(del_link(head,xm)==1)\x0d\x0a{\x0d\x0aprintf("\n刪除成功,新表為:\n");\x0d\x0aprint_link(head);\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0aprintf("刪除不成功");\x0d\x0a}\x0d\x0a}

c語(yǔ)言用函數(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);

//鏈表長(zhǎng)度函數(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;

}

}

//鏈表長(zhǎng)度函數(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語(yǔ)言創(chuàng)建鏈表

主函數(shù)這里

Linklist?List;

printf("輸入創(chuàng)建鏈表的長(zhǎng)度:");

scanf("%d",num);

CreateList_H(List,num); //創(chuàng)建鏈表

改為?

LNode?List;

printf("輸入創(chuàng)建鏈表的長(zhǎng)度:");

scanf("%d",num);

CreateList_H(List,num); //創(chuàng)建鏈表

函數(shù)內(nèi)在堆上分配好內(nèi)存,但是 沒(méi)有傳遞到棧上

另外?你的變量名很迷人

文章標(biāo)題:c語(yǔ)言如何用函數(shù)創(chuàng)建鏈表 c語(yǔ)言創(chuàng)建鏈表每一步詳解
網(wǎng)站地址:http://aaarwkj.com/article14/hhjhde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)頁(yè)設(shè)計(jì)公司、服務(wù)器托管、網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)、App開發(fā)

廣告

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

營(yíng)銷型網(wǎng)站建設(shè)
久久一区二区视频在线观看| 美女少妇性高潮的视频| 小仙女精品经典三级永久| 亚洲永久精品天码野外| 亚洲天堂一区二区av| 后入式动漫在线观看| 2018在线不卡爱视频| 日韩一区二区人妻在线| 国产欧美日韩91成人| 91精品国产老熟女在线| 成人又黄又爽大片在线观看| 国产精品乱人偷免费视频| 日本欧美二区在线看| 国产一区二区三区婷婷| 欧美日韩电影一区二区三区在线观看| 国产一区二区精品久久岳√| 亚洲乱码中文字幕人妻| 婷婷亚洲悠悠色悠在线| 中文字幕熟女av一区二区| 久久久久亚洲av成人网人| 欧美日韩精品视频专区| 亚洲午夜av久久乱码| 国产欧美成人精品第一区| 97国产超碰在线观看| 蜜臀av午夜福利在线观看| av中文字幕啊嗯不要| 午夜看片福利欧美熟女| 国产精品粗又长一区| 在线天堂一区二区三区| 亚洲欧洲日韩综合另类| 日本中文字幕三级专区| 日韩av黄色制服在线网站| 天天日夜夜操人人干人人插| 熟女精品国产一区二区三区| 成人福利午夜一区二区| 午夜福利福利一区二区| 国产欧美亚洲精品一区二区| 日本97久久久久久精品| 高清av网站大全网站| 五月婷婷丁香噜噜噜噜| 久久产精品一区二区三区日韩|