| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 350 人关注过本帖
标题:常见到的一个编译错误,不知道什么原因
只看楼主 加入收藏
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
结帖率:57.14%
收藏
 问题点数:0 回复次数:0 
常见到的一个编译错误,不知道什么原因
程序代码:
/*1、创建单链表   
  2、删除链表中的某个结点    
  3、输出单链表(遍历)    
  4、释放结点所占空间  
  5、查找第i个结点     
  6、插入一个结点       
  7、求链表的长度
      菩萨保佑          */

 
/*线性表基本操作的编程实现*/
#include"stdio.h"
#include"stdlib.h"
#define        LEN        sizeof(struct Student)
typedef struct Student
{
    long num;
    char name[20];
    int old;
    char sex[5];
    struct Student *next;
}Node;
/*单向动态链表的创建*/
Node *creat()
{
    Node *head,*p1,*p2;
    p1=p2=(Node *)malloc(LEN);
    head=NULL;
    printf("输入学生的学号(0表示结束):");
    scanf("%d",&p1->num);
    while(p1->num!=0)
    {
        printf("\n输入学生的信息(姓名 年龄  性别):");
        scanf("%s %d %s",p1->name,&p1->old,p1->sex);
        if(head==NULL)head=p1;
        else p2->next=p1;
        p2=p1;
        p1=(Node *)malloc (LEN);
        printf("\n输入学生的学号(0表示结束):");
        scanf("%d",&p1->num);
    }
    p2->next=NULL;
    return head;
}
/*单向链表的输出*/
void print(Node *head)
{
    Node *p;
    p=head;
    if(head!=NULL)
    {
        printf("\n学号   姓名   年龄    性别\n");
        do
        {
        printf(" %s      %s      %d      %s",p->name,p->old,p->sex);
            p=p->next;
        }while(p!=NULL);
    }
    printf("\n");
}
/*向单向链表中插入一个结点(按学号由小到大)*/
Node *insertup(Node *head,Node *newp)
{
    Node *p1,*p2;
    p1=head;
    if(head==NULL)
    {
        head=newp;
        newp->next=NULL;
    }
    else
    {
        while((p1->num<newp->num)&&(p1->next!=NULL))
        {
            p2=p1;
            p1=p1->next;
        }
        if(p1->num>=newp->num)
        {
            p2->next=newp;
            newp->next=p1;
        }
        else
        {
            p1->next=newp;
            newp->next=NULL;
        }
    }
    return head;
}
/*单向链表的删除某一个结点*/
Node *del(Node *head,int num)
{
    Node *p,*pt;
    int a=1,find=1;
    pt=head;
    p=pt;
    while(a==1)
    {
        if(pt->num==num)
        {
            p=pt->next;
            head=pt=p;
            find=1;
            a=1;
        }
        else
        {
            pt=pt->next;
            a=0;
        }
    }
    while(pt!=NULL)
    {
        if(pt->num==num)
        {
            p->next=pt->next;
            find=1;
        }
        else
            p=pt;
        pt=pt->next;
    }
    if(!find)
        printf("没有找到  %d.",num);
    return head;
}
/*查找*/
void search(Node *head,int i)
{
    int m;
    Node *p=head;
    for(m=1;(m<i)&&(p!=NULL);m++)
    {
        p=p->next;
    }
    if(m<i)printf("输入数据%d有误!\n",i);
    else
    {
        printf("第i个结点的信息:\n");
        printf("学号:%ld\n姓名:%s\n年龄:%d\n性别:%s",p->num,p->name,p->old,p->sex);
    }
}
/*释放空间*/
void release(Node * head)
{
    free(head);
}
/*求链表的长度*/
int length(Node *head)
{
    Node *p=head;
    int length=0;
    while(p!=NULL)
    {
        length=length+sizeof(Node);
        p=p->next;
    }
    return length;
}
   
/*主函数*/
int main()
{
    long num;
    Node *head,*newp=(Node *)malloc(LEN);
    int i,length1;
/*    printf("输入一个数字(1-7):");
    scanf("%d",&k);*/
    head=creat();   //1.
    print(head);
    printf("输入要删除的结点(学号):");   //2.
     scanf("%d",&num);       
    head=del(head,num);
    print(head);   //3.
    printf("要查找的结点数 :");
    scanf("%d",&i);
    search(head,i);  //5
    printf("输入要插入的节点的信息(学号 姓名 年龄 性别 ):\n");  //6
    scanf("%ld %s %d %s",&newp->num,newp->name,&newp->old,newp->sex);
    insertup(head,newp);
    print(head);
    length1=length(head);   //7
    printf("该链表的长度: %d\n",length1);
    release(head);  //4
    return 0;
}
·
搜索更多相关主题的帖子: color 空间 
2015-06-18 09:34
快速回复:常见到的一个编译错误,不知道什么原因
数据加载中...
 
   



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

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