永发信息网

尾插法建链表

答案:3  悬赏:10  手机版
解决时间 2021-02-11 23:17
1 结构体
typedef struct Node
{
int data;
struct Node *next;
}Node;
2链表名字:*s,链表头指针*H,链表尾指针*End;
三个函数 主函数 头结点先为空的函数 和建立链表函数.

然后我会对相关的语句提问题...答完追加

谢谢了.
可以以输入数据c=getchar() 来使链表结束.
最佳答案
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
char data;
struct Node *next;
}Node;
void InitList(Node **H);
void CreatList(Node *H);
void putList(Node *H);
void SearchList(Node *H,char e);
void DelList(Node *H,char e);
void InsList(Node *H,int i,char e);
int main()
{
Node *H;
int i,num;
char e;
printf("1.创建链表\n");
printf("2.查找\n");
printf("3.删除\n");
printf("4.插入\n");
printf("5.输出链表\n");
printf("请输入:");
while (scanf("%d",&num)!=EOF)
{
getchar();
if(num==1)
{
InitList(&H);
CreatList(H);
}
else if(num==2)
{
printf("请输入需要查找的元素:");
scanf("%c",&e);
SearchList(H,e);
}
else if(num==3)
{
printf("请输入需要删除的元素:");
scanf("%c",&e);
DelList(H,e);
}
else if(num==4)
{
printf("请输入需要插入的元素:");
scanf("%c",&e);
printf("请输入需要插入元素的位置:");
scanf("%d",&i);
InsList(H,i,e);
}
else if(num==5)
{
putList(H);
}
else printf("错误!\n");
printf("1.创建链表\n");
printf("2.查找\n");
printf("3.删除\n");
printf("4.插入\n");
printf("5.输出链表\n");
printf("请输入:");
}
return 0;
}
void InitList(Node **H) //初始化
{
*H=(Node *)malloc(sizeof(Node));
(*H)->next=NULL;
}
void CreatList(Node *H) //创建
{
char c;
Node *End=NULL,*L=NULL;
End=H;
int flag=1;
while(flag)
{
scanf("%c",&c);
getchar();
if(c!='s')
{
L=(Node *)malloc(sizeof(Node));
L->data=c;
End->next=L;
End=L;
}
else
{
End->next=NULL;
flag=0;
}
}
}
void SearchList(Node *H,char e) //查找
{
int flag=1;
Node *p=NULL;
p=H->next;
while(flag)
{
if(p->data==e)
{
printf("有此元素\n");
flag=0;
}
else if (p->next==NULL)
{
printf("无此元素\n");
flag=0;
}
else p=p->next;
}
}
void DelList(Node *H,char e) //删除
{
int flag=1;
Node *o=NULL,*p=NULL,*q=NULL;
q=H->next;
while (flag)
{
if (q->data!=e)
{
q=q->next;
}
if(q->next==NULL)
{
printf("无此元素\n");
flag=0;
}
if(q->data==e)
{
break;
}
}
p=q;
q=H;
while(q->next!=p)
{
q=q->next;
}
q->next=q->next->next;
free(p);
}
void InsList(Node *H,int i,char e) //插入
{

int j=0;
Node *p=NULL,*q=NULL,*o=NULL;
p=H;
q=H;
o=(Node *)malloc(sizeof(Node));
o->data=e;
while(j!=i-1)
{
p=p->next;
j++;
}
o->next=p->next;
p->next=o;
}
void putList(Node *H) //输出
{
Node *p=NULL;
p=H->next;
while(p!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
}
全部回答
你说的不是很清楚 #include<iostream> using namespace std; struct Node { int data; struct Node *next; }; typedef struct Node node,*qnode; qnode CreateList(void); void PrintList(qnode a); qnode DelList(qnode a); void main(void) { qnode a=CreateList(); PrintList(a); a=DelList(a); PrintList(a); } qnode DelList(qnode a) { qnode b; while(a) { b=a; a=a->next; free(b); } return NULL; } void PrintList(qnode a) { while(a) { printf("%d\t",a->data); a=a->next; } } qnode CreateList(void) { qnode s,h,end; int bo=0; char str[100]; h=NULL; while(1) { s=(qnode)malloc(sizeof(node)); scanf("%s",str); if(!sscanf(str,"%d",&s->data)) break; s->next=NULL; if(!bo) { bo++; h=s; end=s; } else { end->next=s;//尾插 end=s; } } return h; }
头插发,在链表头部插入一个结点,修改新插入的结点,使其指针部分指向原链表的头部。尾插法,修改原链表的最后一个结点,使其指向新插入的结点。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
速腾冠军和新速腾1.8t 发动机一样吗
恒通汽修厂地址在哪,我要去那里办事
招商银行信用卡申请未出账单分期付款后,在未
单选题隋与秦相似之处是①都结束了分裂走向了
斗战神武器强化出基础16%和带4%攻击加成的金
二溴氯丙烷合成(杀虫试剂)原料和合成路线
2008年给老公买了一份“平安智盈人生终身寿险
中国邮政铁城邮电支局地址在哪,我要去那里办
二甲基甲酰胺是否有还原性,是什么基团有还原
10.黄山从地质构造上看属于A. 背斜  B. 向
一首英文歌,歌词高潮we could be a royal,roy
中梁子我想知道这个在什么地方
七彩虹gts450白金版是gts450的升级版吗?怎么
零向量与非零向量关系,平行还是垂直?
收购美国爱励铝业的是中国忠旺还是刘忠田本人
推荐资讯
紫轩足道地址在什么地方,想过去办事
英文招聘广告100词左右,同志们,别在其他回答
英语翻译小心火灾 安全出口 Emergency Exit男
高人请教~~佳能60D配EF50 1.4USM 或者 EF50 1
湘桂物流快运中心(石马路与瑶琳路交叉口北)地
十二号清真生烤坊在什么地方啊,我要过去处理
无渊大地小说txt全集免费下载
胡记海丽烧饼老店怎么去啊,有知道地址的么
停车场(工农路)(工农北路23号附近停车场)地址
浙江师范大学 杭州师范大学 宁波大学 课程与
在SOL语句之后找到字符,帮忙看一下哪里写错
典当行抵押手机价格压太低,哪里可以抵得多点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?