真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言主函數(shù)調(diào)用鏈表 c語言怎么在主函數(shù)調(diào)用自定義函數(shù)

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

#includestdio.h

創(chuàng)新互聯(lián)建站主營徽縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),徽縣h5成都小程序開發(fā)搭建,徽縣網(wǎng)站營銷推廣歡迎徽縣等地區(qū)企業(yè)咨詢

#includewindows.h

#include stdio.h

#include malloc.h

#include stdlib.h

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

typedef int DataType;

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

//單鏈表結(jié)點(diǎn)存儲結(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;?? ??? ?//定義指向當(dāng)前插入元素的指針

while(1)

{

scanf("%d",x);

if(-1==x)

{?? return head;

break;}

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

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是計(jì)數(shù)器,用來判斷當(dāng)前的結(jié)點(diǎn)是否是第i個(gè)結(jié)點(diǎn)

p=L;

j=1;

while(p!=NULLji)

{

p=p-next ;?? ??? ?//當(dāng)前結(jié)點(diǎn)p不是第i個(gè)且p非空,則p移向下一個(gè)結(jié)點(diǎn)

j++;

}

return p;

}

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

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

{

LNode *p,*s;

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

if(p==NULL)

{

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

exit(-1);

}

else

{

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

s-data =x;

s-next =p-next ;

p-next =s;

}

}

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

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

{

LNode *p,*q;

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

if(p==NULL)

{

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

exit(-1);

}

else

{

if(p-next ==NULL)

{

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

?exit(-1);

}

else

{

?q=p-next ;

?p-next =p-next-next;

?free(q);

}

}

}

//求表長運(yùn)算子函數(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("請輸入選項(xiàng):");

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 malloc.h

int m;

struct Node

{

int data;

struct Node *next;

}* listA, *listB;

//打印AList列表

//參數(shù)AList為顯示的列表

void printList(struct Node *AList)

{

struct Node *post;

post = AList-next;

while (post)

{

printf("%d ",post-data);

post = post-next;

}

printf("\n");

}

//初始化表頭,列表含有表頭

//參數(shù)AList為初始化的列表

void init(struct Node **AList)

{

*AList = (struct Node*)malloc(sizeof(struct Node));

(*AList)-data = 0;

(*AList)-next = 0;

}

//創(chuàng)建列表

//參數(shù)AList為要?jiǎng)?chuàng)建的列表

void ReadList(struct Node **AList)

{

int i;

struct Node *post;

struct Node *pre;

// 輸入列表長度

printf("請輸入列表的長度為:"); scanf("%d",m);

//讀取列表A

pre = *AList;

for(i=1; i=m; i++)

{

post = (struct Node*)malloc(sizeof(struct Node));

printf("第%d個(gè)節(jié)點(diǎn)值為:", i);

scanf("%d", post-data);

post-next = 0;

pre-next = post;

pre = post;

}

}

//插入節(jié)點(diǎn)

//參數(shù)AList為要插入的列表

//參數(shù)Aindex為要插入的節(jié)點(diǎn)的位置

void InsertNode(struct Node **AList, int Aindex = -1)

{

int i;

struct Node *pre, *post;

pre = *AList;

//判斷插入位置,默認(rèn)為頭部插入

if((Aindex0) (Aindex=m))

{

post = (struct Node*)malloc(sizeof(struct Node));

printf("請輸入要插入的節(jié)點(diǎn)值為:");

printf("listN%d = ", Aindex);

scanf("%d", post-data);

post-next = 0;

//尋找插入點(diǎn)

i = 1;

pre = *AList;

while ( iAindex )

{

pre = pre-next;

i = i + 1;

}

//插入節(jié)點(diǎn)

post-next = pre-next;

pre-next = post;

}

else //插入到頭部

{

post = (struct Node*)malloc(sizeof(struct Node));

printf("listA1 = ");

scanf("%d", post-data);

post-next = 0;

//插入節(jié)點(diǎn)

post-next = pre-next;

pre-next = post;

}

m = m + 1;

}

//刪除節(jié)點(diǎn)

//參數(shù)AList為要?jiǎng)h除的列表

//參數(shù)Aindex為要?jiǎng)h除的節(jié)點(diǎn)的位置

void DeleteNode(struct Node **AList, int Aindex)

{

int i;

struct Node *pre, *post;

pre = *AList;

//判斷刪除位置

if((Aindex0) (Aindex=m))

{

//尋找刪除點(diǎn)

i = 1;

while ( iAindex )

{

pre = pre-next;

i = i + 1;

}

//賦值要?jiǎng)h除節(jié)點(diǎn)

post = pre-next;

pre-next = post-next;

delete post;

m = m - 1;

}

else //輸入越界

{

printf("不存在此節(jié)點(diǎn)");

}

}

//列表存盤

//參數(shù)AList為要存盤的列表

int WriteFile(struct Node *AList)

{

struct Node *post;

FILE *fd;

fd = fopen("data.txt", "wt");

if (fd == NULL)

{

printf("File open error");

return 0;

}

post = AList-next;

while (post)

{

fprintf(fd, "%d ", post-data);

post = post-next;

}

fclose(fd);

return 1;

}

//使用文件創(chuàng)建列表

//參數(shù)AList為要?jiǎng)?chuàng)建的列表

int ReadFile(struct Node **AList)

{

struct Node *pre, *post;

FILE *fd;

fd = fopen("data.txt", "rb");

if (fd == NULL)

{

printf("File open error");

return 0;

}

//讀取列表

pre = *AList;

while (!feof(fd))

{

post = (struct Node*)malloc(sizeof(struct Node));

fscanf(fd, "%d ", post-data);

post-next = 0;

pre-next = post;

pre = post;

}

fclose(fd);

return 1;

}

void main(void)

{

//listA使用輸入創(chuàng)建

//listB使用讀取文件創(chuàng)建

init(listA);

init(listB);

ReadList(listA);

printf("輸入的列表為:");

printList(listA);

InsertNode(listA, 1);

printf("插入第一個(gè)節(jié)點(diǎn)后的列表為:");

printList(listA);

DeleteNode(listA, 2);

printf("刪除第二個(gè)節(jié)點(diǎn)后的列表為:");

printList(listA);

WriteFile(listA);

ReadFile(listB);

printf("使用文件創(chuàng)建的列表為:");

printList(listB);

}

以上程序可以直接運(yùn)行,且結(jié)果正確。

主函數(shù)可以再做的復(fù)雜一些和友好一些。刪除節(jié)點(diǎn)的位置和插入節(jié)點(diǎn)的位置可以作為輸入之類的。

希望對你有所幫助

C語言編程——單鏈表的建立與維護(hù),要求:由主函數(shù)調(diào)用單鏈表的建立、元素插入、刪除和輸出子函數(shù),謝了

link *creat(int n) //鏈表建立 n為長度

{

link *p,*p0;

top=(link*)malloc(sizeof(link));

printf("輸入數(shù)據(jù) ");

scanf("%d",top-n);

top-next=NULL;

p0=top;

while(--n)

{

p=(link*)malloc(sizeof(link));

printf("輸入數(shù)據(jù) ");

scanf("%d",p-n);

p0-next=p;

p-next=NULL;

p0=p;

}

return top;

}

void inlink(int n,link *p0,link *p) //插入 p q之間

{

link *r;

r=(link*)malloc(sizeof(link));

r-n=n;

r-next=p;

p0-next=r;

p0=r;

}

void printl(link *head) //輸出

{

link *p0,*p;

p=head;

while(p!=NULL)

{

p0=p;

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

p=p-next;

}

}

void remov(link *p0,link *p) 刪除

{

p0-next=p-next;

free(p);

}


網(wǎng)站欄目:c語言主函數(shù)調(diào)用鏈表 c語言怎么在主函數(shù)調(diào)用自定義函數(shù)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/ddjdhjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部