| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 378 人关注过本帖
标题:求大神帮忙看看为什么exe时停止工作
只看楼主 加入收藏
桉梣
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-24
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
求大神帮忙看看为什么exe时停止工作
#include<stdio.h>
#include<stdlib.h>
#define null 0
typedef int datatype;
typedef struct lnode
{
datatype data;
struct lnode*next;

}lnode,*linkedlist;

/*链表的初始化*/
lnode *init(lnode *l)
{  lnode *p1,*p2;
    p1=p2=(lnode *)malloc(sizeof(lnode)); //申请新节点
    if(p1 == NULL || p2 ==NULL)
    {
        printf("内存分配失败\n");
        exit(0);
    }
    scanf("%d",&p1->data);    //输入新节点
    p1->next = NULL;         //新节点的指针置为空
    while(p1->data > 0)        //输入的值大于0则继续,直到输入的值为负
    {
        if(l == NULL)       //空表,接入表头
        {
            l= p1;
        }
        else               
        {
            p2->next = p1;       //非空表,接入表尾
        }
        p2 = p1;
        p1=(lnode *)malloc(sizeof(lnode));    //再重申请一个节点
        if(p1 == NULL || p2 ==NULL)
        {
        printf("内存分配失败\n");
        exit(0);
        }
        scanf("%d",&p1->data);
        p1->next = NULL;
    }
    printf("链表创建成功?\n");
    return l;           //返回链表的头指针
}





/*清空单链表*/

void clear(lnode *l)
{
lnode *p;
p=l->next;
if(!p)

printf("空");

else p->next=l->next;

}

/*检查链表是否为空*/
int empty(lnode *l)
{
lnode *p;

p=l->next;
if(!p)

{printf("空");
return 1;
}
else return 0;

}
/*遍历单链表*/
void traverse(lnode *l)
{
        lnode *p;
        printf("建立的单链表为:\n");
        p=l->next;
        while(p)
        {
                printf("%d ", p->data);
                p=p->next;
        }
        printf("\n");
}
/*单链表的长度*/
int length(lnode *l)
{int count=0;
lnode *p;
p=l->next;
while(p)
{
count++;
p=p->next;
}

printf("输出长度为%d\n",count);
return count;
}



/*从单链表中寻找元素*/
int get(lnode *l,int i)
{int j=0;
lnode *p;

p=l->next;
while(p&&j<i)
{
p=p->next;
++j;

}
if(!p||j<i)
return 0;
}




/*从单链表中寻找与给定元素值相同元素在链表的位置*/
int locate(lnode *l,datatype x)
{
lnode *p;
p=l->next;
if(p!=NULL)
{
printf("空");
}
   
if(x < 0)
  printf("给定值X不合法\n");
        while(((p->data)!=x)&&(p->next)) //判断是否到链表末尾,以及是否存在所要找的元素
           p = p->next;
   
    if((p->data != x)&&(p!=null))
   
        printf("在链表中未找到x值\n");
        
   
    if(p->data == x)
    {
        printf("元素 %d 的地址为 0x%x\n",x,&(p->data));
    }
 
   
}



/*插入元素*/
int insert(lnode *l,int i,datatype x)
{int j=0;
lnode *p,*s;
p=l->next;

while((p&&j)<(i-1))
{
p=p->next;
++j;

}
if(!p||j<i-1)
return 0;
    s=(lnode *)malloc(sizeof(lnode));
    s->data=x;
    s->next=p->next;
    p->next=s;
    printf("插入元素成功\n");
 
    return 1;

}





/*删除元素*/
int del(lnode *l,int i,datatype x)
{

int j=0;
lnode *p,*q;
p=l->next;

while((p&&j)<(i-1))
{
p=p->next;
++j;

}
if(!p||j<i-1)
return 0;
q=p->next;
p->next=q->next;
x=q->data;
free(q);
return 2;


}





/*用尾插法建立单链表*/
void create(lnode *l,int n)
{    int i;
    lnode *p;
     l=(lnode*)malloc(sizeof(lnode));
     l->next=null;
 
   for(i=n;i>0;--i)
    p = (lnode *)malloc(sizeof(lnode)); //申请一个新节点
    scanf("%d",&p->data);
    p->next =l->next;  
}

 

 
int main()
{  
   lnode *l;   
    init(l);                  //链表初始化
   
    clear(l);      //清空单链表                             
    empty(l);        // 检查链表是否为空
    traverse(l);       //遍历链表
    length(l);        //链表的长度
   
    get(l,4);//从单链表中寻找第四个元素
 
    locate(l,7);// 寻找与7相同元素在链表的地址
    insert(l,3,10);  //第三个元素前插入元素10
    del(l,2,4);//删除第二个元素
    create(l,6);//用尾插法建立单链表
   



return 0;


}
搜索更多相关主题的帖子: include null 
2015-05-24 11:03
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
too long to read have a change...
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct lnode{
    int data;
    struct lnode *next;
}lnode;
lnode *p,*q,*head;         
void init(lnode *l){                   /*链表的初始化*/
    head=(lnode *)malloc(sizeof(lnode));
    head->next=NULL;
}
void clear(){                          /*清空单链表*/
    head->next=NULL;
}
int empty(){                           /*检查链表是否为空*/
    return head->next==NULL;
}
void traverse(){                         /*遍历单链表*/
    p=head;
     while(p->next!=NULL){
       printf("%d\t",p->data);
       p=p->next;
    }  
     printf("%d\n",p->data);
}
int length(){                            /*单链表的长度*/
     p=head;
     int count=0;
     while(p){
       p=p->next;
       count++;
    }   
    return count;
}
int get(int i){                         /*从单链表中寻找元素*/
    p=head;
    while(p->next!=NULL){
       if(p->data==i){
           return 1;
       }
       p=p->next;
    }  
    return 0;
}
int locate(datatype x){                   /*从单链表中寻找与给定元素值相同元素在链表的位置*/
    p=head;
    int index=0,f=0;
     while(p->next!=NULL){
       if(p->data==x){
           index++;
           f=1;
           break;
       }
       p=p->next;
    }  
    if(f)return 1+index;
    else return 0;
}
void insert(int i){                                         /*插入元素*/
    int j,data;
    if(i>=length()||i<0){
        printf("输入位置不合法");
        return;
    }
    else {   
       printf("input the data to be inserted");
       scanf("%d",&data);
       p=head;
       for(j=1;j<i;j++) p=p->next;
       q=(lnode *)malloc(sizeof(lnode));
       q->next=p->next;
       p->next=q;               
       q->data=data;
    }
   
}
void create(int k){                                       /*用尾插法建立单链表*/
    int i;
    head=(lnode *)malloc(sizeof(lnode));      
    p=head;
    for(i=1;i<k;i++){
        printf("input the NO.%d element:",i);      
        p->next=(lnode *)malloc(sizeof(lnode));
        scanf("%d",&p->data);   
        p=p->next;
    }
         printf("input the last element:");                 
   scanf("%d",&p->data);            
   p->next=NULL;
}      
main(){
    int k,i,data;
    printf("input the length of Line:");
    scanf("%d",&k);
    create(k);
    printf("length=%d",length());
    printf("input the place of insertion:(smaller than %d)",k);
    scanf("%d",&i);
    insert(i-1);
    traverse();
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-24 13:39
桉梣
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-24
收藏
得分:0 
回复 2楼 林月儿
谢谢。
2015-05-24 20:48
快速回复:求大神帮忙看看为什么exe时停止工作
数据加载中...
 
   



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

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