手机
当前位置:查字典教程网 >编程开发 >C语言 >c语言链表操作示例分享
c语言链表操作示例分享
摘要:复制代码代码如下:#include#include#include/*以下是为了构建线性链表而定义的结构体*/typedefstructch...

复制代码 代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

/*以下是为了构建线性链表而定义的结构体*/

typedef struct chaink{

char c;

struct chaink * next;

}ck;

ck * chain(ck *,int);

int print(ck *,int);

/*以下是main函数*/

int main(void){

printf("这是一个线性链表试验程序。n");

ck * head=NULL;

int k;

k=sizeof(ck);

do{

head=chain(head,k);

printf("是否要结束程序?若结束,请按y/Y;按其他键继续录入。n");

if(getch()=='y' && getch()=='Y'){

printf("程序结束。n");

getch();

break;

}

}while(1);

return 0;

}

/*以下是为了演示线性链表而试着编写的程序模块*/

ck * chain(ck * head,int k){

ck * next=NULL;/*扫描链表时要用到的临时局部变量*/

ck * temp=NULL;/*插入新结点时要用到的临时局部变量*/

int i=0;/*隔壁print函数依赖的一个参数*/

if(head==NULL){

head=(ck*)malloc(k);/*创建一个空的数据节点,第一个数据节点*/

if(head==NULL){

printf("malloc内存错误!");

getch();

exit(1);

}/*检验刚刚是否已经成功创建数据节点*/

printf("头结点已成功创建,其地址为%p。n",head);

head->next=NULL;

head->c='0'; /*初始化头结点*/

}

do{/*以从HEAD结点之后处插入新数据节点的方式接收录入的数据*/

printf("是否要录入新数据?若录入,请按y/Y;按其他键结束录入。n");

if(getch()!='y' && getch()!='Y'){

printf("录入结束。n");

getch();

break;

}

temp=head->next;/*储存头节点指针域的数据*/

head->next=(ck*)malloc(k);/*创建一个新节点*/

if(head->next==NULL){

printf("malloc内存错误!");

getch();

exit(1);

}/*检验刚刚是否已经成功创建数据节点*/

next=head->next;/*扫描到新创建的节点*/

next->next=temp;/*给新节点的指针域赋值*/

printf("请录入新数据……n");

next->c=getch();/*给新节点的数据域赋值*/

if(next->c==-1){

printf("系统录入端错误!");

getch();

exit(1);

}

printf("新数据录入成功。录入的新数据为%c,其数据节点的地址为%p。n",next->c,next);/*反馈*/

}while(1);/*以从HEAD结点之后处插入新数据节点的方式接收录入的数据(结束)*/

if(head->next==NULL){/*数据打印环节*/

printf("数据链表里现在没有数据。n");

getch();

}

else{

printf("是否要显示链表中所有的数据及其地址?若要显示,请按y/Y;按其他键跳过。n");

if(getch()!='y' && getch()!='Y'){

printf("跳过。n");

getch();

return head;

}

printf("现在输出链表的内容……n 序号 数据 指针n");

for(next=head->next;next!=NULL;next=next->next){

i=print(next,i);/*调用打印链表用的函数*/

}

}/*数据打印环节(结束)*/

return head;

}

/*以下是打印链表用的函数*/

int print(ck * next,int i){

printf(" %d %c %pn",i,next->c,next);

i++;

return i;

}

【c语言链表操作示例分享】相关文章:

C语言函数的递归和调用实例分析

用C语言实现单链表的各种操作(一)

C数据结构之双链表详细示例分析

基于C语言char与unsigned char的区别介绍

C语言宏定义使用分析

C语言小程序 杨辉三角示例代码

解析c语言switch中break语句的具体作用

C数据结构之单链表详细示例分析

关于c语言指针的两处小tip分享

c语言内存泄露示例解析

精品推荐
分类导航