| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1220 人关注过本帖
标题:编程实现单向链表建立、删除、插入、输出
只看楼主 加入收藏
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
结帖率:100%
收藏
 问题点数:0 回复次数:2 
编程实现单向链表建立、删除、插入、输出
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
union data
{int x;
char s[10];
}m;
typedef struct node
{
    long xh;
    char name[10];
    int sc;
}DD;
typedef struct snode
{
    long xh;
    char name[10];
    int sc;
    struct snode *next;
}NODE,*linklist;//DE *
void input(DD *st,int n)
{
    int i;
    for(i=0;i<n;i++)
        scanf("%ld%s%d",&st[i].xh,st[i].name,&st[i].sc);
}

linklist create(DD st[],int n)
{
    linklist h,p,q;
    int i;
    h=(linklist)malloc(sizeof(NODE));
    h->xh=st[0].xh;
    strcpy(h->name,st[0].name);
    h->sc=st[0].sc;
    p=q=h;
    for(i=1;i<n;i++)
    {
        q=p;
        p=(linklist)malloc(sizeof(NODE));
        p->xh=st[i].xh;
        strcpy(p->name,st[i].name);
        p->sc=st[i].sc;
        q->next=p;
    }
    p->next=NULL;
    return(h);
}
void output(linklist h)
{
    linklist p;
    p=h;
    while(p)
    {
        printf("%ld %s %d\n",(*p).xh,p->name,p->sc);
        p=p->next;
    }
}
linklist search(linklist h,char xm[])
{
    linklist p=h;
    while(p)
    {if(strcmp(p->name,xm)==0)
        return(p);
    p=p->next;
    }
    return(NULL);
}

void dellink(linklist h,int i)
{
    linklist p=h,f;
    int j=1;
    while(j<i-1)
    {
        p=p->next;
        j++;
    }
    f=p->next;
    p->next=f->next;
    free(f);
}
void *insert(NODE *h,int i,NODE *f)
{
    NODE *p;
    int j;
    p=h;
    f=(linklist)malloc(sizeof(NODE));
    scanf("%ld%s%d",&f->xh,f->name,&f->sc);
    j=1;
    while(j<i&&p)
    {
        p=p->next;
        j++;
    }
    if(i==1)
    {
        h=f;
        f->next=p;
    }
    else
    {
        f->next=p->next;
        p->next=f;
    }
    return h;
}
main()
{
    NODE *a,*f;
    linklist h ,p;
    DD st[5];
    char xm[10];
    int n,i;
    printf("输入单链表:\n");
    input(st,5);
    h=create(st,5);
    printf("输出单链表:\n");
    output(h);
    printf("输入查找的名字:\n");
    getchar();
    gets(xm);
    p=search(h,xm);
    if(p)
        printf("Succ:%ld %s %d\n",(*p).xh,p->name,p->sc);
    else
        printf("failed:no person:\n");
        printf("输入删除的人的位数:\n");
        scanf("%d",&n);
    dellink(h,n);
    printf("deleted:\n");
    output(h);
    printf("输入插入的学号姓名成绩");

    insert(a,2,f);
    printf("输出单链表:\n");
    output(h);

}
搜索更多相关主题的帖子: int node name next printf 
2019-05-20 23:18
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
收藏
得分:0 
请问插入模块怎么改一下啊,老是没有输出?
2019-05-20 23:27
打大龙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:64
注 册:2019-4-14
收藏
得分:0 
调用错了
insert(h, 2, f);

还有insert函数类型是void,没有返回值
2019-05-21 06:33
快速回复:编程实现单向链表建立、删除、插入、输出
数据加载中...
 
   



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

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