数据结构教程第五版上机实验指导(数据结构上机: 用顺序存储结构建立一个通讯录内容有姓名,地址,电话号码)
本文目录
数据结构上机: 用顺序存储结构建立一个通讯录内容有姓名,地址,电话号码
#include 《iostream》
#include 《fstream》
#include 《string》
using namespace std;
#define SIZE 10
struct AddrList
{
string name;
string ***;
int age;
string QQ;
}addrlist;
int main()
{
int i;
int j;
cout《《"输入要输入的记录数量:";
cin》》i;
if (i》SIZE)
{
cout《《"输入的记录数量大于顺序表的最大长度!"《《endl;
return 0;
}
cout《《"输入格式:\n姓名 性别 年龄 QQ\n"《《endl;
for (j=0;j《i;++j)
{
cout《《"输入第"《《j+1《《"条记录"《《endl;
cin》》*****;
}
cout《《"\n姓名\t性别\t年龄\tQQ"《《endl;
for (j=0;j《i;++j)
{
cout《《*****《《endl;
}
return 0;
}
输入:2
张三 男 23 123456
李四 女 24 66666
数据结构实验:线性表的顺序表示和链式表示及插入、删除、查找运算
这是我的第一次上机实验课的内容来呢!
#include 《*****》
#include 《*****》
#include《*****》
struct list //结点类型
{ int data;
struct list *next;
};
struct list *head;//声明结点指针
int static length;//声明表长变量
struct list *creat_n()//创建有n个元素的链表
{
struct list *q,*p,*head=NULL;
printf("\n输入你所要创建的结点数: ");
scanf("%d",&length);
head=p=(list*)malloc(sizeof(list)); //创建一个新结点并用头指针指向它
printf("输入该结点的值: ");
scanf("%d", &p-》data);
p-》next=NULL;
for(int i=length-1;i》=1;i--)
{
q=p;
p=(list*)malloc(sizeof(list)); //创建新结点
printf("输入该结点的值: ");
scanf("%d", &p-》data);
q-》next=p;
}
printf("输入完毕\n\n");
p-》next=NULL;
return head;
}
struct list * output()//输出表长与结点值函数
{
struct list *p;
p=head;
printf("\n当前链表中存有的元素:\n");
while(p!=NULL)
{
printf("%d\n",p-》data);
p=p-》next;
}
printf("当前的表长是: %d\n\n",length);//输出当前表长
return head;
}
void insert()//插入结点函数
{
struct list *k,*p,*q;
int x;
printf("请输入你要在哪个结点值之前插入新结点: ");
scanf("%d",&x);
k=(list*)malloc(sizeof(list));//创建新结点
printf("请输入新结点的值: ");
scanf("%d",&k-》data);
k-》next=NULL;
if(head==NULL)//若链表为空,则直接入链表
{
head=k;
length=length+1;
printf("插入成功\n\n");
}
else if(head-》data==x)//在第一个结点前插入新结点
{
k-》next=head;
head=k;
printf("插入成功\n\n");
length=length+1;
}
else
{
q=head;
p=head-》next;
while((p != NULL) && (p-》data != x))//找出值为X的结点的位置
{
q = p;
p = p-》next;
}
if (p == NULL)
{
q-》next=k;//在链表末插入新结点
printf("插入成功\n");
length=length+1;
}
else if(p-》data == x)//在要求的X结点前插入新结点
{
k-》next=p;
q-》next=k;
printf("插入成功\n\n");
length=length+1;
}
}
output();
}
int delet()//删除结点函数
{
struct list *q,*p;
int x,y;
printf("请输入你所要删除的结点值: ");
scanf("%d",&x);
if(head==NULL)//表空
{
printf("表空\n");
return 0 ;
}
else if(x==head-》data)//第一个结点为删除的结点
{
q=head;
head=head-》next;
y=q-》data;
****(q);
printf("删除成功\n\n");
length=length-1;
output();
return(y);
}
else
{
q=head;
p=head-》next;
while((p != NULL) && (p-》data != x))//找出值为X的结点
{
q=p;
p=p-》next;
}
if(p==NULL)
{
printf("没有删除对象\n");
}
if(x==p-》data)//删除值为X的结点
{
q-》next=p-》next;
y=p-》data;
****(p);
printf("删除成功\n\n");
length=length-1;
output();
return (y);
}
else
{
printf("表中没有指定的结点\n");
output();
return 0;
}
}
return 0;
}
void find()
{
struct list *p;
int k,x,i=1;
char y,n;
LOOP:
p=head;
printf("请输入你要查找的结点值: ");
scanf("%d",&x);
while(p-》data!=x)
{
p=p-》next;
i++;
}
printf("你所查找的结点是表中第 %d 个结点!\n\n",i);
printf("是否要继续查找,请输入y/n\n\n");
k=getch();
if(k==’y’)
{
i=1;
goto LOOP;
}
else
return;
}
void main()
{
printf("计Y062 200502001052 李抱和\n\n");
int a;
LOOP:
printf(" *****************\n");
printf(" ** 1 创建链表 **\n");
printf(" ** 2 链表输出 **\n");
printf(" ** 3 插入结点 **\n");
printf(" ** 4 删除结点 **\n");
printf(" ** 5 查找结点 **\n");
printf(" *****************\n");
printf("\n请选择: ");
scanf("%d",&a);
switch(a)
{
case 1 :
head=creat_n();
break;
case 2 :
output();
break;
case 3 :
insert();
break;
case 4 :
delet();
break;
case 5 :
find();
break;
}
goto LOOP;
}
数据结构上机实验***设计一个程序exp7–*****,实现二叉树
什么是二叉树的基本算法? 算法是建立在应用的基础上的,没有明确的需求,对于数据结构,算法的设计恐怕也没什么根据
更多文章:
wireshark找不到网卡(win7使用USB无线网卡,但是wireshark不能发现这块网卡,该怎么处理)
2026年5月7日 08:20
数据结构教程第五版上机实验指导(数据结构上机: 用顺序存储结构建立一个通讯录内容有姓名,地址,电话号码)
2026年5月7日 07:00
斯特林切尔西(斯特林当选切尔西2-1莱斯特城最佳,他和梅西的差距还有多大)
2026年5月7日 05:40
vue rules 表单验证(vue:动态添加删除el-form-item并做rules校验)
2026年5月7日 05:20







