bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

c語言函數輸入鏈表 c++輸入鏈表

C語言鏈表創建和輸入

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

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

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

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

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

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

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

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

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

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

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

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

printf("請輸入要學生個數,以回車結束!\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);???????????????????????????????

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

}

截圖如下:

編寫函數插入一個結點到鏈表之中 C語言

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

=

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

=

cur;

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

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

1,鏈表是否為空鏈表

2,要插入的節點是不是空指針。

代碼實現:

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

//輸入參數:單鏈表的頭指針和要插入的節點指針

//輸出參數:無

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

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語言創建鏈表,函數調用部分

#includestdio.h

#includewindows.h

#include stdio.h

#include malloc.h

#include stdlib.h

//定義數據類型名稱

typedef int DataType;

#define flag -1?? ??? ?//定義數據輸入結束的標志數據

//單鏈表結點存儲結構定義

typedef struct Node

{

DataType data;

struct Node *next;

}LNode ,*LinkList;

//建立單鏈表子函數

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;

}

}

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

LNode *Get_LinkList(LinkList L,int i)

{

LNode *p;

int j;?? ??? ?//j是計數器,用來判斷當前的結點是否是第i個結點

p=L;

j=1;

while(p!=NULLji)

{

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

j++;

}

return p;

}

//插入運算子函數

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

{

LNode *p,*s;

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

if(p==NULL)

{

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

exit(-1);

}

else

{

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

s-data =x;

s-next =p-next ;

p-next =s;

}

}

//單鏈表的刪除運算子函數

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

{

LNode *p,*q;

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

if(p==NULL)

{

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

exit(-1);

}

else

{

if(p-next ==NULL)

{

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

?exit(-1);

}

else

{

?q=p-next ;

?p-next =p-next-next;

?free(q);

}

}

}

//求表長運算子函數

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("**創建**********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("請輸入位置和數據;");

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;

}

}

}

我把創建給改了一下

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

#include stdio.h

#include stdlib.h

#define M 2

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

typedef struct Node //建立線性鏈表

{

int a[M][1];//定義一個列數組

struct Node*next;//指針成員

}LNode;

void create(LNode*head);//創建線性鏈表函數聲明

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

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

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

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

{

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

printf("目前列數等于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',則結束輸入:");

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++)//循環輸入該列的每一行每一個元素

{ scanf("%d",x);

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

}

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

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

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

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

scanf("%d",x);

n++;//列數自增一

}

}

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

{

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

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

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

{

for(i=0;in;i++)//執行 “行循環 ”

{

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;//將頭指針的后繼變為第二列

free(p);//釋放空間

n--;//n自減

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

}

else if(kn)

{

for(i=2;ik;i++)//循環找到節點的前驅

{

p=p-next;

}

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

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

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;//定義所要改變的元素的列數

LNode*p=head-next;//定義指向第一個元素的結構指針

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);//再現

}

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

希望對你有所幫助!!!

C語言鏈表的輸入

struct

student

*creat(void)

{struct

student

*head;

struct

student

*p1,*p2;

n=0;

p1=p2=(struct

student*)malloc(len);

//這里格式化輸入二個數0,0

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

//head賦值為null

head=null;

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

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語言函數輸入鏈表 c++輸入鏈表
文章起源:http://vcdvsql.cn/article24/hpjdje.html

成都網站建設公司_創新互聯,為您提供網頁設計公司網站設計企業網站制作外貿網站建設做網站

廣告

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

成都定制網站網頁設計