| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 981 人关注过本帖
标题:[求助]单链表
只看楼主 加入收藏
小妖女
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-10
收藏
 问题点数:0 回复次数:4 
[求助]单链表

小女对编程比较感兴趣,只是业余时间学了一些,请高手帮帮忙。

题目:

1. 设计并实现单链表的结点类和单链表类。

2. 设计算法,实现单链表存储结构上元素的插入与删除。

·从键盘输入10个数据元素(或由计算机产生10个随机数),动态产生带头结点的单链表,并输出该单链表。

·从键盘输入一个元素插入链表中第i个位置,输出链表,观察结果。

·删除刚才插入的结点,输出链表,观察结果。

·输入数据x,删除数据域值小于x值的所有结点,输出链表,观察结果。
这道题都作了两周了,但做出来的程序不是很满意,不知道大家有没有更好的程序,小女只学过c++,没有学过c,还望用c++帮忙。小女才上高中,还望大家多多帮助!

[此贴子已经被作者于2006-4-10 22:19:28编辑过]

搜索更多相关主题的帖子: 单链 
2006-04-10 22:17
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 
呜呜
我才到大学才学编程
小牛妹
你去买数据结构课本看看

http://www. 第二站>>>提供源码下载
2006-04-11 08:05
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
收藏
得分:0 

以前做过的一个实验,不知道能不能看懂 ,
你可以适当的该一下就可以 了.
不过我用的是结构体,差不多 一样吧


#include "stdafx.h"

#include "string.h"

#include "iostream.h"

#include <stdlib.h>

#include <conio.h>

#include <string.h>

#define ok 1

//记录类型

typedef struct DataType

{

char num[5];

char nam[9];

char sex[8];

char phone[13];

char addr[31];

}data,jilu;

//链表节点创立

typedef struct node

{

DataType data;

struct node *next;

}Listnode,*Linklist;

Linklist p;

/////////////-------操作函数---------//////////////////

//链表的建立

int initlist_l(Linklist &l)

{

l=(Linklist)malloc(sizeof(Listnode));

if(!l)

exit(0);

l->next=NULL;

cout<<"链表已经建立!"<<endl;

return ok;

}

//数据的添加

int CreatList_l(Linklist &l)

{

Linklist p,q;

q=l;

p=(Linklist)malloc(sizeof(Listnode));

cout<<"编号(5):"; cin>>p->data.num;

cout<<"姓名(9):"; cin>>p->data.nam;

cout<<"性别(3):"; cin>>p->data.sex;

cout<<"电话(13):"; cin>>p->data.phone;

cout<<"地址(31):"; cin>>p->data.addr;

p->next=q->next;

q->next=p;

q=p;

return ok;

}

//显示查询函数

Linklist traverlist(Linklist &l,char nam1[9])

{

p=l->next;

while(p&&strcmp(p->data.nam,nam1)!=0)

{

p=p->next;

}

return p;

}

//数据的删除

int delet(Linklist head,char nam1[])

{

Linklist p1,p2;

p1=head;

while(strcmp(nam1,p1->data.nam)&&p1->next)

{

p2=p1;

p1=p1->next;

}

p2->next=p1->next;

cout<<"已经删除!"<<endl;

return ok;

}

//输出函数

void output(Linklist head)

{

Linklist p1;

p1=head->next;

while(p1)

{

cout<<"编号(5)"<<p1->data.num<<endl;

cout<<"姓名(9):"<<p1->data.nam<<endl;

cout<<"性别"<<p1->data.sex<<endl;

cout<<"电话(5)"<<p1->data.phone<<endl;

cout<<"地址(5)"<<p1->data.addr<<endl;

cout<<"*************************************"<<endl;

p1=p1->next;

}

}

//菜单

int menu_select()

{

int sn;

cout<<"++++++++++++++++++++++++++++++++++++++++++"<<endl;

cout<<"添加(1)"<<" "<<"查询(2)"<<" "<<"删除(3)"<<" "<<"输出所有记录(4)"<<" "<<"退出(0)"<<endl;

cout<<"请选择0-4:"<<endl;

cout<<"++++++++++++++++++++++++++++++++++++++++++"<<endl;

for(;;)

{

cin>>sn;

if(sn<0||sn>4)

cout<<"输入错误,请重新输入:"<<endl;

else

break;

}

return sn;

}

void main()

{

Linklist l;

char nam1[9];

initlist_l(l);

cout<<"----------------------通讯录管理系统----------------------"<<endl;

cout<<"=========================================================="<<endl;

for(;;)

{

switch(menu_select())

{

case 1:

cout<<"请输入记录"<<endl;

CreatList_l(l); //调用函数 添加记录

break;

case 2:

cout<<"请输入要查询的姓名:";

cin>>nam1;

cout<<"你要查询的信息如下:"<<endl;

traverlist(l,nam1); //调用函数 查询记录

if(p)

{

cout<<"numble:"<<p->data.num<<endl;

cout<<"name:"<<p->data.nam<<endl;

cout<<"sex:"<<p->data.sex<<endl;

cout<<"phone:"<<p->data.phone<<endl;

cout<<"addr:"<<p->data.addr<<endl;

}

else

cout<<"没有此项记录!!"<<endl;

break;

case 3:

//cout<<"删除记录"<<endl;

cout<<"请输入要删除的姓名:";

cin>>nam1;

delet(l,nam1); //调用函数 删除记录

break;

case 4:

output(l); //输出所有记录

break;

case 0:

exit(0); //退出

}

}

}


天地有正气,凛烈万古存。
2006-04-12 17:06
小妖女
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-10
收藏
得分:0 
有没有关于这道题更好的程序?
2006-04-14 12:48
欣馨
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-16
收藏
得分:0 

这个问题,我觉得还是1楼的说的对,应该是看一下《数据结构》这本书!不要想着就能直接来答案多好,我喜欢追求答案的过程~~~时而欢乐,时而郁闷,总之,就象生活一样。
还有二楼的说的是结构体,struct其实不难,只要看下C语言的结构体部分,就知道了,比《数据结构》简单的多,链表在《数据结构》中讲的比较多,因为它和顺序表不同。把结构体串起来就是链表!如果是插入和删除,我认为只需要看看C语言的链表部分就可以了,甚至连《数据结构》都不用看,因为,插入和删除是链表的基本操作之一。在C语言中应该有很具体的操作实例!!关键是指针,只要理顺了指针是怎么用的,我认为剩下的就是写程序的问题了,不在是思维的了。
另求帮助,毕业论文是:利用C++实现超大整数的运算方法的探讨。我想找个乘法运算的数据结构,或者给我讲下怎么实现的也行~~!加减法都简单,就是乘法和除法难,要时间复杂度比较小的

2006-04-16 12:55
快速回复:[求助]单链表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043809 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved