链表c++语言 解析,c++语言链表练习.doc

c语言链表练习

C++语言程序设计实验报告

实验一 结构体程序设计

一、实验目的

1)掌握结构体类型的概念、定义和使用;

2)掌握结构体中链表的定义和使用;

二、实验内容及步骤

1)实验题目要求

使用结构体类型建立链表,要求设计一个操作界面,在每次输入一个数后,执行相对应的操作。其基本操作包括在链表头部、尾部、某一固定值后插入一个结点,对链表中存在的结点进行修改,对链表中存在的结点进行删除和对所有结点进行清空,选择操作包括对链表中所有的结点进行排序。

2)部分程序代码及注释

#include

#include

#define ID_LEN 10

//建立一个结构体

struct Stu

{char id[ID_LEN];

char* name;

int nHeight;

Stu* next;

};

typedef Stu StuLst;

//删除节点操作

void DeleteLst(StuLst* lst)

{ char id[10];

Stu* p=lst,* q=lst->next;

bool b=false;

cout<

cin>>id;

//查看链表中是否存在要删除的学生

while(q)

{if(strcmp(q->id,id) != 0)

q=q->next;

else

{

b=true;

break;

}

}

if(!b)

cout<

if(!lst || !id)

return;

while(b)

{

while(p->next)

{

if(strcmp(p->next->id,id) == 0)

{cout<

//找到了,删除

Stu* q = p->next;

p->next = q->next;

delete q;

break;

}

p = p->next;

}

}

}

//把新的节点插入到链表头部

void InsertToFirst(StuLst* lst)

{ char id[10], name[15];

int nHeight ;

cout<

cin>>id;

cout<

cin>>name;

cout<

cin>>nHeight;

//验证记录是否重复

bool t=true;

Stu* q=lst->next;

while(q)

{

if(strcmp(q->id,id) == 0)

{ cout<

t=false;

break;

}

else

q=q->next;

}

//若以前的链表中无重复的学号时,实现插入新节点操作

while(t)

{

//验证数据是否合法

if(lst==NULL || id==NULL)

return;

//构造新节点

Stu* pSt = new Stu;

//给新节点赋值

pSt->nHeight = nHeight;

strcpy(pSt->id,id);

if(name)

{

pSt->name = new char[strlen(name)+1];

strcpy(pSt->name,name);

}

else

pSt->name = NULL;

//插入到链表第一个位置

pSt->next = lst->next;

lst->next = pSt;

t=false;

}

}

//对链表中是整形类型的数值进行升序排序

void BufferSort(StuLst* lst)

{

Stu* p;

int temp,i,j,n=0;

char strid[10], strname[20];

p=l

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值