请用c语言写,数据结构的题一个带头指针的单链表,写出在其值为x的结点之后插入m个结点的程序。

请用c语言写,数据结构的题一个带头指针的单链表,写出在其值为x的结点之后插入m个结点的程序。请用c语言写,数据结构的题目………希望来个完整程序哈... 请用c语言写,数据结构的题一个带头指针的单链表,写出在其值为x的结点之后插入m个结点的程序。请用c语言写,数据结构的题目………希望来个完整程序哈 展开
 我来答
自我编程
2018-07-17 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

#include <stdio.h>
#include <malloc.h>

typedef struct st
{
    int id;
    struct st *next;
    struct st *tailST;
}ST;
ST *getSTS(int len);//获取一个链表,节点个数为len,返回链表首地址
ST *getST(ST *headST,int con);//获取第con个节点
void printfST(ST *headST);//打印链表
int idNUM=1000;
int main()
{
    int n,con;
    struct st *headST=NULL,*headST2=NULL,*findST=NULL;
    printf("请输入初始链表节点数量:");
    scanf("%d",&n);
    headST=getSTS(n);
    printf("%d个节点链表已生成。\n\n",n);
    printfST(headST);
    printf("请输入要在第几个节点后面插入新节点:");
    scanf("%d",&con);
    findST=getST(headST,con);
    printf("找到的节点ID:%d。\n",findST->id);
    printf("请输入要插入的节点个数:");
    scanf("%d",&n);
    headST2=getSTS(n);
    printf("---开始插入节点--\n");
    headST2->tailST->next=findST->next;
    findST->next=headST2->next;
    printf("---插入完成--\n");
    printfST(headST);
    return 0;
}
void printfST(ST *headST)//打印链表
{
    while(headST->next!=NULL)
    {
        printf("节点编号:%d\n",headST->next->id);
        headST=headST->next;
    }
    printf("\n");
}
ST *getST(ST *headST,int con)//获取第con个节点
{
    int count=0;
    while(headST->next!=NULL)
    {
        count++;
        if(count==con)
            return headST->next;
        headST=headST->next;
    }
    return NULL;
}
ST *getSTS(int len)//获取一个链表,节点个数为len,返回链表首地址
{
    ST *headST=NULL,*tailST=NULL,*newST=NULL;
    headST=(ST *)malloc(sizeof(ST));
    headST->next=NULL;
    headST->tailST=NULL;
    while(len>0)
    {
        newST=(ST *)malloc(sizeof(ST));;
        newST->id=idNUM++;
        newST->next=NULL;
        newST->tailST=NULL;
        if(headST->next==NULL)
           headST->next= newST;
        else
           tailST->next= newST;
        tailST=newST;
        len--;
    }
    headST->tailST=tailST;
    return headST;
}
White_MouseYBZ
2018-07-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6645万
展开全部
#include "stdio.h"
#include <stdlib.h>
#include "time.h"
struct node{
int data;
struct node *next;
};
struct node *createnode(void){
struct node *q;
if((q=(struct node *)malloc(sizeof(struct node)))==NULL){
printf("Application memory failure, exit...\n");
exit(0);
}
return q;
}
int main(int argc,char *argv[]){
struct node *head,*p,*q;
int i,m,x;
srand((unsigned)time(NULL));
for(x=1,head=NULL,m=rand()%20+1,i=0;i<m;i++){
if(head){
p->next=createnode();
p=p->next;
p->data=x++;
p->next=NULL;
}
else{
p=head=createnode();
head->next=NULL;
}
}
printf("Please enter x & m(int)...\n");
scanf("%d%d",&x,&m);
for(p=head->next;p;p=p->next)
if(p->data==x){
for(q=p->next,i=0;i<m;i++){
p->next=createnode();
scanf("%d",&(p=p->next)->data);
}
p->next=q;
break;
}
if(p==NULL){
printf("x(%d) is not found...\n",x);
return 0;
}
for(p=head->next;p;p=p->next)//Look at...
printf("%6d",p->data);
printf("\n");
for(p=head;p->next;p=p->next,free(head),head=p);//Delete link...
free(p);
return 0;
}

运行样例:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heart阿飞55
2018-07-17 · TA获得超过1086个赞
知道大有可为答主
回答量:3030
采纳率:82%
帮助的人:557万
展开全部
struct LNode *insert(struct LNode *head,int x,int i) { int j=1; struct LNode *s,*q; q=head; s=(struct LNode *) malloc ( sizeof(struct LNode) ); s->data=x; if(i==1) { s->next=q; head=s; } else { while(q->next != NULL) { q=q->next; j++; } if(j==i-1) { s->next=q->next; q->next=s; } else printf("error! there is no position\n"); } return(head); }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式