| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1194 人关注过本帖
标题:急求算法~(C语言算法实现~动态查找表)
只看楼主 加入收藏
beyondskykyo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-7-3
收藏
 问题点数:0 回复次数:1 
急求算法~(C语言算法实现~动态查找表)
利用C语言的数据类型表示和实现--——抽象数据类型:动态查找表。
         选择动态查找表中的几个基本操作:构造、销毁、插入、删除、查找
    选择存储结构,并写出存储结构类型定义
         设计对这几个基本操作的实现算法(C语言),并表达为函数形式
采用(    )为元素类型和(     )为存储结构,实现抽象数据类型:动态查找表

ADT DynamicSearchTable {
           数据对象D:
           数据关系R:
           基本操作P:
                     InitDSTable(&DT);
                     DestroyDSTable(&DT);
                     SearchDSTable(DT,key);
                     InsertDSTable(&DT,e);
                     DeleteDSTable(&DT,key);
    } ADT DynamicSearchTable
存储结构定义(对选择的存储结构进行定义)
公用头文件DS0.h:
             ……
             ……
算法设计(用所选择的存储结构,对上述几个基本操作用C语言实现)
            ……
            ……
格式大概就是这样~~学的是数据结构,类C转换为C,我不大会~ 望各位能帮忙,感激不尽~!

[[it] 本帖最后由 beyondskykyo 于 2008-7-3 12:50 编辑 [/it]]

[[it] 本帖最后由 beyondskykyo 于 2008-7-3 12:52 编辑 [/it]]
搜索更多相关主题的帖子: C语言 算法 动态 
2008-07-03 12:47
zeroandone
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-10-20
收藏
得分:0 
我觉得你说的很简单,我也没有时间写,就发一个很类似的给你吧,差不多,你自己去做,和这个很像
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct cust
{
int num;
char name[30];
char party[50];
char tel[12];
char mob_tel[11];
struct cust *next;
}node;
node *create(); /*创建带头结点单链表*/
void print(node *h); /*输出单链表h各个结点的信息*/
node *del(node *h,int i); /*删除表h中编号为i的结点*/
node *Insert(node *h); /*插入*/
void Find(node *h); /*查询并显示*/


void main()
{
node *h;
int choice,n;
while(1)
{

printf(" *********************************************\n");
printf(" |                                           |\n");
printf(" |             通讯录管理系统                |\n");
printf(" |                        --elon制作         |\n");
printf(" |           1. 通讯录的建立                 |\n");
printf(" |           2. 通讯录的输出                 |\n");
printf(" |           3. 通讯录的插入                 |\n");
printf(" |           4. 通讯录的查询                 |\n");
printf(" |           5. 通讯录的删除                 |\n");
printf(" |           0. 退出系统                     |\n");
printf(" *********************************************\n");
printf("请选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:h=create();
break;
case 2:print(h);
break;
case 3:h=Insert(h);
break;
case 4:Find(h);
break;
case 5:printf("请输入编号(整数):");
scanf("%d",&n);
h=del(h,n);
break;
case 0: exit(0);
}
}
}


node *create() /*创建带头结点单链表*/
{
node *head,*s,*t;
head=(node *)malloc(sizeof(node));/*头结点*/
t=head;t->next=NULL; /*t为临时结点*/
s=(node *)malloc(sizeof(node)); /*生成新结点*/
printf("请输入用户信息:\n ");
printf(" 编号(整数,为0时退出 : ");
scanf("%d", &(s->num));
while(s->num > 0 )
{
s->next=NULL;
printf(" 姓名 : ");
scanf("%s", s->name);
printf(" 宿舍电话 : ");
scanf("%s", s->tel);
printf(" 手机 : ");
scanf("%s", s->mob_tel);
printf(" 所属班级 : ");
scanf("%s", s->party);
t->next=s; t=s; /*尾插法,t始终指向表尾*/
s=(node *)malloc(sizeof(node)); /*生成新结点*/
printf("\n\n请输入用户信息:\n ");
printf(" 编号(整数,为0时退出 : ");
scanf("%d", &(s->num));
}
return head;
}


void print(node *h) /*输出单链表h各个结点的信息*/
{
node *p=h->next;
printf("\n=========== 号码记录如下:=======\n ");
printf("编号-姓名-宿舍电话-手机-所属班级\n");
while(p!=NULL)
{
printf(" \n %3d,%8s,%8s,%8s,%8s\n ",p->num,p->name,p->tel,p->mob_tel,p->party);
p=p->next;
}
}


node *del(node *h,int i)
{
node *p=h,*s;
while(p->next!=NULL)
{
if(p->next->num==i)
{
s=p->next;
p->next=s->next; free(s);
}
else
p=p->next;
}
return h;
}

node *Insert(node *head) /*插入*/
{
node *p,*s; /*p、s为临时结点*/
p=head;
s=(node *)malloc(sizeof(node)); /*生成新结点*/
printf("请输入信息: ");
printf(" \n 编号(输入0退出): ");
scanf("%d", &(s->num) );
while( s->num > 0 )
{
s->next=NULL;
printf(" 姓名 : ");
scanf("%s", s->name);
printf(" 宿舍电话 : ");
scanf("%s", s->tel);
printf("手机 : ");
scanf("%s", s->mob_tel);
printf(" 所属班级 : ");
scanf("%s", s->party);
while(p->next!=NULL)
{
p=p->next;
}
if(p->next==NULL)
{
p->next=s;
p=s;
s=(node *)malloc(sizeof(node)); /*生成新结点,放在最后*/
}
}
return head;
}

void Find(node *h) /*查询并显示*/
{
int i; node *q; char a[20];
printf("_______________________________________\n");
printf("| |\n");
printf("| 电话号码查询:    |\n");
printf("| 1. 按姓名查询     |\n");
printf("| 2. 按电话号码查询 |\n");
printf("| 0. 返回主菜单     |\n");
printf("|_____________________________________|\n");
printf("请选择:\n");
scanf("%d",&i);
switch(i)
{
case 1: printf("请输入名字:");
scanf("%s",a);
q=h->next;
while(q!=NULL)
{
if(strcmp(a,q->name)==0)
{
printf("\n编号 : %d ",q->num);
printf("\n姓名 : %s ",q->name);
printf("\n宿舍电话 : %s ",q->tel);
printf("\n手机 : %s ",q->mob_tel);
printf("\n所属班级 : %s \n",q->party);
}
q=q->next;
}
break;

case 2: printf("请输入电话号码:");
scanf("%s",a);
q=h->next;
while(q!=NULL)
{
if((strcmp(a,q->tel))==0||(strcmp(a,q->mob_tel)==0))
{
printf("\n编号 : %d ",q->num);
printf("\n姓名 : %s ",q->name);
printf("\n宿舍电话 : %s ",q->tel);
printf("\n手机 : %s ",q->mob_tel);
printf("\n所属班级: %s \n",q->party);
}
q=q->next;
}
break;
case 0: break;
default: printf("您要查询的记录不存在!\n");
}
}
2008-07-05 11:16
快速回复:急求算法~(C语言算法实现~动态查找表)
数据加载中...
 
   



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

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