永发信息网

帮我写段C程序实例!

答案:3  悬赏:20  手机版
解决时间 2021-06-04 01:41

要求:用结构体 用链表,实现结构体之间的添加。删除!

简单的就行!比如结构体里有姓名 分数!

今天看了两节课的链表!最终还是无法掌握!

最佳答案

#include<iostream>
using namespace std;
struct link
{
int data;
link *next;
};
link *hcreat()
{
int i;
link *p,*s;
p=new link;
p->next=NULL;
cout<<"输入数据:";
cin>>i;
while(i)
{
s=new link;
s->data=i;
s->next=p->next;
p->next=s;
cout<<"输入数据:";
cin>>i;
};
return p;
}
link *Locate(link *head,int x)
{
link *p;
p=head->next;
while((p!=NULL)&&(p->data!=x))
{
p=p->next;
}
return p;
}
void insert(link *head,int x,int y)
{
link *p,*s;
s=new link;
s->data=x;
if(head->next==NULL)
{
head->next=s;
s->next=NULL;
}
p=Locate(head,y);
if(p==NULL)
cout<<"error";
else
{
s->next=p->next;
p->next=s;
}
}
void Delete(link *head,int x)
{
link *p,*s;
s=head;
p=head->next;
while((p!=NULL)&&(p->data!=x))
{
s=p;
p=p->next;
}
if(p==NULL)
cout<<"error";
else
{
s->next=p->next;
delete(p);
}
}
void print(link *head)
{
link *p;
p=head->next;
while(p!=NULL)
{
cout<<p->data<<"-";
p=p->next;
}
cout<<endl;
}
int main()
{
link *H;
int k;
int x,y;
do
{
cout<<"\n\n\n\n";
cout<<"\t\t\t链表子系统\n";
cout<<"\t\t***************************\n";
cout<<"\t\t** 1.建 表 **\n";
cout<<"\t\t** 2.插 入 **\n";
cout<<"\t\t** 3.删 除 **\n";
cout<<"\t\t** 4.查 找 **\n";
cout<<"\t\t** 5.显 示 **\n";
cout<<"\t\t** 0.返 回 **\n";
cout<<"\t\t***************************\n";
cout<<"\t\t请输入0-5项:\n";
cin>>k;
switch(k)
{
case 1:
H=hcreat();
break;
case 2:
cout<<"\n请输入插入位置的数值y:";
cin>>y;
cout<<"\n请输入要插入的数据x:";
cin>>x;
insert(H,x,y);
cout<<"插入后链表为:";
print(H);
break;
case 3:
cout<<"\n请输入要删除的元素x:";
cin>>x;
Delete(H,x);
cout<<"删除后链表为:";
print(H);
break;
case 4:
cout<<"\n请输入要查找的数值x:";
cin>>x;
link *p;
p=Locate(H,x);
if(p!=NULL)
{
print(H);
cout<<"值为x所在的位置是"<<p;
}
else
cout<<"链表中无此无素!";
break;

case 5:
cout<<"\n输出线性表:";
print(H);
break;
}
}while(k!=0);
}



这是我学习后写的,可能有些出入。希望能帮助你,

全部回答
写了个超简单的,节点里只包含一个元素(当然这无关紧要,你可以自己扩充),包括了在特定节点插入和删除特定节点的2个操作: #include <stdio.h> #include <stdlib.h> typedef struct _slist { int data; struct _slist* next; } *node, slist; node insert(node* head, node p, int data) { node n; n = (node)malloc(sizeof(slist)); n->data = data; n->next = p ? p->next : *head; (p ? p->next : *head) = n; return n; } node create(int* beg, int* end) { node head, t; head = t = NULL; while(beg != end) t = insert(&head, t, *beg++); return head; } void remove(node* head, node r) { node prev; if(r == *head) { *head = r->next; } else { prev = *head; while(prev->next != r) prev = prev->next; prev->next = r->next; } free(r); } void print(node head) { while(head) { printf("%d ", head->data); head = head->next; } putchar('\n'); } int main() { int a[] = {1,2,3,4,5}; node head = create(a, a + 5); print(head); remove(&head, head->next); print(head); getchar(); return 0; }
用C还是C++
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
禽兽的前世?
舞钢市平顶山艺欣舞蹈(舞钢分校)哪位知道具体
谁知道QQ游戏中国象棋中象棋王的QQ号码
DNF為何進去后過一會就不見勒??
谁玩过这个游戏告诉我这个游戏名字
谁能帮我查一下单号是ED150431686CS快递到哪
我想知道昆明和嵩明的水泥厂有多少个!联系方
求一个格式转换器,要求是全面点的,能转换视
"做。爱“女孩真的能减肥吗?
华容县岳阳湘毕罗包子铺(华容侨联店)我想知道
福建三鬼泣收裂创
我的QQ磁盘空间密码忘记了!谁知道怎么找回密
N82番禺哪里有卖
怎样模仿周杰伦的歌啊?
我是一张椭圆形的脸,适合什么发型,能不能详
推荐资讯
为什么没有寸芒小说
江汉区武汉中通快递地址在哪,我要去那里
商业业态结构的发展过程
我的电脑开机缓慢,系统可能中了病毒,寻求根
资深网页CSS设计专家救命啊,没办法了
隐身玩游戏QQ上会显示吗?
芙蓉区长沙魔咒酒吧(暂停营业)在什么地方啊,
月经还没来过了还几天了现在乳房涨痛碰照就痛
跪求一本玄幻修真类书的名字紧急谢谢
NDS模拟器的麦克风用不了
一定要成功这首歌哪里能找到?
股票:600171和601107怎么看后市?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?