- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基
本
知
识
综
合
训
练
二
班级:信1101-1班
学号姓名:崔 海 营
日期:2012.9.11
基本知识综合训练(二)
一、实验目的与要求
掌握结构体类型变量的定义和使用;
掌握链表的概念,掌握对链表的综合操作操作;
进一步提高程序的设计能力和调试能力
要求:上机前先编制程序并画出程序框图;独立完成实验;独立完成实验报告。
二、实验内容
输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按照字母表顺序输出,不出现的不输出)。
解题思路:
建立一个结构体建立循环链表,将数值输入链表中
建立一个结构体
建立循环链表,将数值输入链表中
先让链表运行到第k个数据处
然后进行m的小循环,输出数到m的链表并删除此节点
最后将所有值输出
程序清单:
#includeiostream
using namespace std;
struct people//建立一个结构体
{
int num;
struct people*next;
};
int main()
{
int n,m,k,i;
struct people*head,*p1,*p2;
cout请输入总人数:endl;/*输入N,M,K的数值*/
cinn;
cout请输入开始人的编号:endl;
cink;
cout请输入淘汰数字:endl;
cinm;
head=new struct people;//开辟新单元
head-num=1;//输入第一个数据
p1=head-next=head;
for(i=2;i=n;i++)//输入剩下的数据
{
p2=new struct people;
p2-num=i;
p2-next=head;
p1-next=p2;
p1=p2;
}
p2=head;//将头指针赋予p2
for(i=1;ik;i++)p2=p2-next;//先运行到开始人的编号
while(p2-next!=p2)
{
for(i=1;im;i++)//运行到第m-1个人
{
p1=p2;
p2=p2-next;
}
coutp2-num ;//输出数到m的人
p1-next=p2-next;//删除已出的链表指针
delete p2;
p2=p1-next;
}
coutp2-numendl;//将最后一个数据输出
return 0;
}
运行结果1:
请输入总人数:
8
请输入开始人的编号:
1
请输入淘汰数字:
4
4 8 5 2 1 3 7 6
Press any key to continue
运行结果2:
请输入总人数:
10
请输入开始人的编号:
4
请输入淘汰数字:
12
5 8 2 9 7 1 10 6 4 3
Press any key to continue
2.将一条链表上相邻的二个结点合并成一个结点,即将第一个结点与第二结点合并,将第三个结点与第四个结点合并,……。若链表上的结点个数为奇数,则最后的一个结点不合并,直接作为合并后链表上的最后一个结点。链上结点的数据结构为:stuct node { int data; struct node *next; };
解题思路:
创建一个结构体利用链表将所需数据输入
创建一个结构体
利用链表将所需数据输入
由头指针开始将两个链表合并,
保留第一个节点释放第二个节点
将新链表输出
程序清单:
#includeiostream
using namespace std;
struct node//创建一个结构体
{
int data;
struct node*next;
};
int main()
{
int i,data;
struct node*p1,*p2,*head;
coutplease input number:endl;
cindata;//输入数据的数量
coutplease the number of you want to:endl;
p1=head=new struct node;//开辟一个新单元
for(i=1;idata;i++)//将数据输入
{
cinp1-data;
p1=p1-next=new struct node;
}
cinp1-data;//将最后一个数据输入
p1-next=NULL;
cout合并后:endl;
p1=head;//将头指针赋予p1
while(p1!=NULL)
{
p2=p1-next
原创力文档


文档评论(0)