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

c語言函數(shù)輸入鏈表 c++輸入鏈表

C語言鏈表創(chuàng)建和輸入

敢問樓主,為何要兩個鏈表?你的需求一個鏈表完全搞定了啊,第二個鏈表是用來做什么的?

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、做網(wǎng)站、韶山網(wǎng)絡(luò)推廣、小程序定制開發(fā)、韶山網(wǎng)絡(luò)營銷、韶山企業(yè)策劃、韶山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供韶山建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.chinadenli.net

#includestdio.h???????????????????????????????????????????????????????????????

#includestdlib.h??????????????????????????????????????????????????????????????

struct?student{?????????????????????????????????????????????????????????????????

char?name[10];?????????????????????????????????????????????????????????????????

char?id[10];???????????????????????????????????????????????????????????????????

struct?student?*next;??????????????????????????????????????????????????????????

};??????????????????????????????????????????????????????????????????????????????

int?main(void)??????????????????????????????????????????????????????????????????

{???????????????????????????????????????????????????????????????????????????????

int?n;???????????????????????????????????????????????????????????????????????

printf("請輸入要學生個數(shù),以回車結(jié)束!\n");??????????????????????????????????

scanf("%d",n);??????????????????????????????????????????????????????????????

struct?student?*head=(struct?student?*)malloc(sizeof(struct?student));???????

head-next=NULL;?????????????????????????????????????????????????????????????

struct?student?*end=head;????????????????????????????????????????????????????

for(int?i=0;i!=n;i++)????????????????????????????????????????????????????????

{????????????????????????????????????????????????????????????????????????????

struct?student*p=(struct?student?*)malloc(sizeof(struct?student));?????????

p-next=NULL;??????????????????????????????????????????????????????????????

printf("第%d個學生信息:\n",i+1);??????????????????????????????????????????

printf("??姓名:");????????????????????????????????????????????????????????

scanf("%s",p-name);??????????????????????????????????????????????????????

printf("??學號:");????????????????????????????????????????????????????????

scanf("%s",p-id);????????????????????????????????????????????????????????

end-next=p;???????????????????????????????????????????????????????????????

end=p;?????????????????????????????????????????????????????????????????????

}????????????????????????????????????????????????????????????????????????????

for(struct?student?*p=head-next;p!=NULL;p=p-next)??????????????????????????

{????????????????????????????????????????????????????????????????????????????

printf("姓名:%s??學號:%s?\n",p-name,p-id);???????????????????????????????

}????????????????????????????????????????????????????????????????????????????

}

截圖如下:

編寫函數(shù)插入一個結(jié)點到鏈表之中 C語言

如果已知一個節(jié)點指針pre和一個節(jié)點指針cur,要把cur插入到pre節(jié)點之后,很顯然要保證鏈表不會斷開而丟失后面的節(jié)點,要先把后面的節(jié)點指針(指向lat的指針)保存下來,即有cur-next

=

pre-next,然后把cur連接的一串鏈表連接到pre后面,即pre-next

=

cur;

上面介紹了,在一個節(jié)點之后插入節(jié)點的情況。這是通常的情況。如果要向一個鏈表的頭部插入節(jié)點,就只需要將新節(jié)點的下一個指針指向鏈表的頭指針即可。

在這種情況下,有兩點要注意:

1,鏈表是否為空鏈表

2,要插入的節(jié)點是不是空指針。

代碼實現(xiàn):

//向單鏈表中插入一個節(jié)點(插入在鏈開始處)

//輸入?yún)?shù):單鏈表的頭指針和要插入的節(jié)點指針

//輸出參數(shù):無

//返回值:指向單鏈表的頭指針

singlelist*

insert(singlelist

*head,singlelist

*node)

{

if(node

==

null)

{

return

head;

}

else

if(head

==

null)

{

return

node;

}

node-next

=

head;

head

=

node;

return

head;

}

C語言創(chuàng)建鏈表,函數(shù)調(diào)用部分

#includestdio.h

#includewindows.h

#include stdio.h

#include malloc.h

#include stdlib.h

//定義數(shù)據(jù)類型名稱

typedef int DataType;

#define flag -1?? ??? ?//定義數(shù)據(jù)輸入結(jié)束的標志數(shù)據(jù)

//單鏈表結(jié)點存儲結(jié)構(gòu)定義

typedef struct Node

{

DataType data;

struct Node *next;

}LNode ,*LinkList;

//建立單鏈表子函數(shù)

LNode *Create_LinkList()

{

LNode *s,*head,*L;int i=0,x;?? ??? ?//定義指向當前插入元素的指針

while(1)

{

scanf("%d",x);

if(-1==x)

{?? return head;

break;}

s= (LNode *)malloc(sizeof(LNode));?? ??? ?//為當前插入元素的指針分配地址空間

s-data =x;

s-next =NULL;

i++;

if(i==1)

head=s;

else

L-next =s;

L=s;

}

}

//查找子函數(shù)(按序號查找)

LNode *Get_LinkList(LinkList L,int i)

{

LNode *p;

int j;?? ??? ?//j是計數(shù)器,用來判斷當前的結(jié)點是否是第i個結(jié)點

p=L;

j=1;

while(p!=NULLji)

{

p=p-next ;?? ??? ?//當前結(jié)點p不是第i個且p非空,則p移向下一個結(jié)點

j++;

}

return p;

}

//插入運算子函數(shù)

void Insert_LinkList(LinkList L,int i,DataType x)?? ??? ?//在單鏈表L中第i個位置插入值為x的新結(jié)點

{

LNode *p,*s;

p =Get_LinkList(L,i);?? ??? ?//尋找鏈表的第i-1個位置結(jié)點

if(p==NULL)

{

printf("插入位置不合法!");

exit(-1);

}

else

{

s= (LinkList)malloc(sizeof(LNode));?? ??? ?//為當前插入元素的指針分配地址空間

s-data =x;

s-next =p-next ;

p-next =s;

}

}

//單鏈表的刪除運算子函數(shù)

void Delete_LinkList(LinkList L,int i)?? ??? ?//刪除單鏈表上的第i個結(jié)點

{

LNode *p,*q;

p=Get_LinkList(L,i-1);?? ??? ?//尋找鏈表的第i-1個位置結(jié)點

if(p==NULL)

{

printf("刪除的位置不合法!");?? ??? ?//第i個結(jié)點的前驅(qū)結(jié)點不存在,不能執(zhí)行刪除操作

exit(-1);

}

else

{

if(p-next ==NULL)

{

?printf("刪除的位置不合法!");?? ??? ?//第i個結(jié)點不存在,不能執(zhí)行刪除操作

?exit(-1);

}

else

{

?q=p-next ;

?p-next =p-next-next;

?free(q);

}

}

}

//求表長運算子函數(shù)

int Length_LinkList(LinkList L)

{

int l;?? ??? ?//l記錄L的表長

LNode *p;

p=L;

l=1;

while(p-next)

{

p=p-next;

l++;

}

return l;

}

int main ()

{

LNode *head,*p;

head=(LinkList)malloc(sizeof(LNode));

int x,y;

a:

printf("*******menu*******\n");

printf("**創(chuàng)建**********1*\n");

printf("**插入**********2*\n");

printf("**刪除**********3*\n");

printf("**表長**********4*\n");

printf("**清屏**********5*\n");

printf("**打印**********6*\n");

printf("**退出******other*\n");

printf("******************\n");

int i=1;

while(i)

{

printf("請輸入選項:");

scanf("%d",i);

switch(i)

{

case 1:head=Create_LinkList(); getchar();break;

case 2:printf("請輸入位置和數(shù)據(jù);");

scanf("%d%d",x,y);

Insert_LinkList(head,x,y);break;

case 3:printf("請輸入位置;");

scanf("%d",x);

Delete_LinkList(head,x);break;

case 4:printf("%d",Length_LinkList(head));break;

case 5:system("cls");goto a;

case 6:p=head;

while(p!=NULL)

{printf("%d\n",p-data);

p=p-next;}

break;

default :i=0;

}

}

}

我把創(chuàng)建給改了一下

C語言中將鍵盤輸入的信息存入鏈表

#include stdio.h

#include stdlib.h

#define M 2

int n,i,j,x; //定義變量 ,M為行,n為列,i、j為循環(huán)變量,x為自變量

typedef struct Node //建立線性鏈表

{

int a[M][1];//定義一個列數(shù)組

struct Node*next;//指針成員

}LNode;

void create(LNode*head);//創(chuàng)建線性鏈表函數(shù)聲明

void display(LNode*head);//顯示線性鏈表函數(shù)聲明

void Deleteline(LNode*head);//刪除鏈表中的某幾列函數(shù)聲明

void Change(LNode*head);//改變鏈表中數(shù)據(jù)的函數(shù)的聲明

int main(int argc, char *argv[])

{

printf("列表目前行數(shù)等于2\n");

printf("目前列數(shù)等于0\n");//表示 m行0列

LNode*head;//定義鏈表頭指針

head=(LNode*)malloc(sizeof(LNode));//分配空間

head-next=NULL;//下一個為空

create(head);//建立線性鏈表

display(head);//顯示線性鏈表

Deleteline(head);//刪除某一列

display(head);//顯示

Change(head);//改變元素

system("PAUSE");

return 0;

}

void create(LNode*head)

{

LNode*p,*rear=head;//空的線性鏈表頭和尾

printf("輸入 '0'或'1'\n如果您輸入 '0',則結(jié)束輸入:");

scanf("%d",x);

n=0;//表示有0列

while(x)//輸入"0"則退出

{ if(!n)

printf("輸入第一列:\n");

else printf("輸入下一列:\n");

p=(LNode*)malloc(sizeof(LNode));//為指針分配空間

for(i=0;iM;i++)//循環(huán)輸入該列的每一行每一個元素

{ scanf("%d",x);

p-a[i][0]=x;

}

p-next=NULL;//新追加的結(jié)點為尾結(jié)點,后繼為空

rear-next=p;//新追加的結(jié)點在最后,也就是rear的后繼

rear=p;//新追加的結(jié)點為新的表尾,rear指向新的表尾

printf("輸入 '0'或'1'\n如果您輸入 '0',則結(jié)束輸入:");

scanf("%d",x);

n++;//列數(shù)自增一

}

}

void display(LNode*head)//列表顯示函數(shù)

{

LNode*p=head-next;//定義指針成員指向表頭

printf("列表\n");//顯示列表名稱并換行

for(j=0;jM;j++)

{

for(i=0;in;i++)//執(zhí)行 “行循環(huán) ”

{

printf("%d\t",p-a[j][0]); //

p=p-next;//p指向下一元素

}

p=head-next;//重新指到表頭

printf("\n");//換行

}

printf("n=%d\n",n);

}

void Deleteline(LNode*head)

{

LNode*p=head-next;//定義成員指針

int k;//定義所刪除的列序號

printf("輸入您要刪除的列序號:");//提示輸入列序號

scanf("%d",k);//接收列序號

if(k==1)

{

head-next=p-next;//將頭指針的后繼變?yōu)榈诙?/p>

free(p);//釋放空間

n--;//n自減

printf("n=%d\n",n);

}

else if(kn)

{

for(i=2;ik;i++)//循環(huán)找到節(jié)點的前驅(qū)

{

p=p-next;

}

LNode*q=p-next;//定義指向所刪除列的指針

p-next=q-next;//把所刪除的列節(jié)點的后繼賦給其前驅(qū)的后繼

free(q);//釋放空間

n--;

printf("n=%d\n",n);

}

else

{

for(i=1;ik;i++)//直接找到

{

p=p-next;

}

free(p);//釋放

n--;

printf("n=%d\n",n);

}

}

void Change(LNode*head)

{

int k;//定義所要改變的元素的列數(shù)

LNode*p=head-next;//定義指向第一個元素的結(jié)構(gòu)指針

printf("輸入您要改變的元素的行坐標:");//提示輸入要改變的元素的行坐標

scanf("%d",j);//接收

printf("輸入您要改變的元素的列坐標:");//提示輸入要改變的元素的列坐標

scanf("%d",k);//接收

for(i=1;ik;i++)//找到

{

p=p-next;

}

printf("請輸入改變后的值:");//提示輸入改變的值

scanf("%d",x);//接收

p-a[j-1][0]=x;//傳值

display(head);//再現(xiàn)

}

我這是一個鏈表構(gòu)造的列表,功能有:建立一個列表、刪除一列,顯示列表、改變具體位置的元素值四個大功能。不過行數(shù)初始化確定了的,是2,你也可以自己設(shè)計如何在dos窗口動態(tài)輸入。注釋都有,你自己還可以修改其中的函數(shù)和語句,使這個結(jié)構(gòu)功能變得更強大。

希望對你有所幫助!!!

C語言鏈表的輸入

struct

student

*creat(void)

{struct

student

*head;

struct

student

*p1,*p2;

n=0;

p1=p2=(struct

student*)malloc(len);

//這里格式化輸入二個數(shù)0,0

scanf("%ld,%f",p1-num,p1-score);

//head賦值為null

head=null;

//剛才輸入的是0因此不滿足條件一次循環(huán)都不走

while(p1-num!=0)

{

n=n+1;

if(n==1)head=p1;

else

p2-next=p1;

p2=p1;

p1=(struct

student*)malloc(len);

scanf("%ld,%f",p1-num,p1-score);

}

p2-next=null;

//所以這時候head還是最初賦的值null自然打不出信息

return(head);

}

分享標題:c語言函數(shù)輸入鏈表 c++輸入鏈表
文章起源:http://www.chinadenli.net/article24/hpjdje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司網(wǎng)站設(shè)計企業(yè)網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)做網(wǎng)站

廣告

聲明:本網(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)站網(wǎng)頁設(shè)計