用c语言实现链表数据保存,数据结构链表C语言实现.doc

数据结构链表C语言实现

数学与信息技术学院2016~2017(下)学年

计科专业2015级《数据结构》实验报告 2

学号:2015201018 姓名:汪继超

实验名称线性表的链式存储结构完成时间一.实验目的掌握单链表的概念及其各种运算的原理。

通过对单链表的建立及几种基本运算等的算法实现,掌握线性表的链式存储结构、各种运算和指针的表示及应用等内容。初步掌握运用链式结构的编程和调试程序的能力。

用C语言实现并上机调试通过,认真填写实验报告二.实验要求采用链式存储结构完成。

注意类C和C的转换。

上机调试通过,认真书写实验报告。三.实验原理

链表是一种动态存储结构。线性表的链式存储结构的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放线性表的数据元素。线性表的一个结点由两个域组成:存放自身的数据和存放直接后继结点存储位置的指针域 。用指针相连接的

结点序列称为链表,若逻表中每个结点只包含一个指针域,则此链表为线性链表或单链表。通常链表中的每个结点可以有若干个数据域 和多个链域 。我们常用C语言中的“指针”类型来描述线性链表。

四.实验内容定义函数create_linklist(): 建立一个具有n个结点的单向链表L,要求返回表头指针;

定义函数count_node():统计结点个数,要求以表头指针作为调用函数,返回结点个数;

定义函数insert_node():在链表L的第I个结点前插入一个结点,要求以表头指针作为调用函数,无返回值;

定义函数delete_node():删除链表L的第I个元素,要求以表头指针作为调用函数,无返回值;

定义函数print_node():输出单链表;

以上每次操作结束,输出单链表,要求以表头指针作为调用函数,无返回值。实验过程:

#include

#include

#include

#include

typedef int ElemType;

typedef struct Lnode{

ElemType data;

struct Lnode *next;

}Lnode, *LinkList;

void print_node(LinkList L);

void color(const unsigned short color1)//颜色函数

{

if(color1>=0&&color1<=15)

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);

else

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);

}

LinkList create_linklist(LinkList L)//建立链表L,返回表头指针;

{

int i,n;

Lnode *p,*q;//L为头指针,p为新元素指针,q为表尾指针

q=L;

L->next=NULL;

color(13);

printf("\n请输入您要创建的数据条数:");

scanf("%d",&n);

printf("\n请输入数据:");

for(i=0;i

{

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

scanf("%d",&p->data);

q->next=p;

q=p;

}

fflush(stdin);//清空在此前输入缓冲区

q->next=NULL;

printf("\n已创建数据:");

print_node(L);

color(10);

return L;

}

void print_node(LinkList L)//打印

{

Lnode *p;

p=L->next;

while(p)

{

printf("%5d",p->data);

p=p->next;

}

printf("\n");

}

int count_node(LinkList L)//统计

{

int count=0;

Lnode *p;

p=L->next;

while(p)

{

p=p->next;

count++;

}

color(13);

printf("\n统计得总共记录为:%d条\n",count);

color(10);

return count;

}

void insert_node(Lnode *L,int i,ElemType x,int count)//插入;

{

Lnode *p

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值