| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:关于链表程序的补充完整
只看楼主 加入收藏
linjiaxing
Rank: 2
来 自:梅州
等 级:论坛游民
帖 子:19
专家分:13
注 册:2011-9-21
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
关于链表程序的补充完整

#include <stdio.h>
#include<stdlib.h>
struct Data
{
    int num;
    struct Data *next;
};

struct Data* Creatlist()    //输入创建链表,顺序输入,不排序
{
    int number;
    struct Data *p,*head=NULL,*tail=NULL;
    printf("请输入要插入的数字,按'-1'结束\n");
    scanf("%d",&number);
    while(number>=0)
    {
        p=(struct Data *)malloc(sizeof(struct Data));
        p->num=number;
        p->next=NULL;
        if(head==NULL)
            head=tail=p;  
        else
        {
            tail->next=p;
            tail=p;
        }
        scanf("%d",&number);    //输入回车
    }
    return head;
}

void print(struct Data *head)   //输出链表
{
while(head!=NULL)
{
printf(“%d->”,head->num);
head=head->next;
}
printf(“NULL”);

   
}

int lenth(struct Data *p)    //计算结点长度
{
      int i=0;
for(int j=0;p!=NULL;j++)
{
    i++;
    p=p->next;
}
return(i);   
   
}
   
}

struct Data* find(struct Data *p,int key)   //查找指定结点
{
   
}

struct Data* delt(struct Data *p,int key)    //删除指定结点
{
   
}

struct Data* inserth(struct Data *p,int key)   //在链表头部插入指定元素
{
   
}

struct Data* insertt(struct Data *p,int key)    //在链表尾部插入指定元素
{
   
}

struct Data* insertm(struct Data *p,int key)   //在链表中间插入指定元素
{
   
}

void deleted(struct Data *p)       //释放链表
{
   
}

void main()
{
    struct Data *q;
    q = Creatlist();              //q为实参,指向头结点
    print(q);                       //输出初始化链表
    printf("链表元素个数:%d\n",lenth(q));   //输出链表长度
    find(q,6);                   //查找第一个数据为6的结点   
    q=delt(q,5);                   //删除第一个数据为5的结点
    print(q);
    //q=inserth(q,0);                  //在头结点插入元素0
    //q=insertt(q,0);                    //在尾结点插入元素0
    q=insertm(q,3);                    //在链表中间插入3,在第一个比3大的数后面插入
    print(q);
    deleted(q);                        //释放链表
}
搜索更多相关主题的帖子: 链表程序 
2011-09-21 20:23
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
回复 楼主 linjiaxing
今天作业帖特别多

总有那身价贱的人给作业贴回复完整的代码
2011-09-21 21:56
linjiaxing
Rank: 2
来 自:梅州
等 级:论坛游民
帖 子:19
专家分:13
注 册:2011-9-21
收藏
得分:0 
如果行的话,这几天帮我弄好了。OK?
2011-09-21 22:23
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:10 
程序代码:
#include <stdio.h>
#include<stdlib.h>

 struct Data

 {
     int num;
     struct Data *next;

 };

struct Data* Creatlist()    //输入创建链表,顺序输入,不排序
 {
     int number;
     struct Data *p,*head=NULL,*tail=NULL;
     printf("请输入要插入的数字,按'-1'结束\n");
     scanf("%d",&number);
     while(number>=0)
     {
         p=(struct Data *)malloc(sizeof(struct Data));
         p->num=number;
         p->next=NULL;
         if(head==NULL)
             head=tail=p;
         else
         {
             tail->next=p;
             tail=p;
         }
         scanf("%d",&number);    //输入回车
     }
     return head;

 }

void print(struct Data *head)   //输出链表
 {
    while(head!=NULL)
     {
         printf("%d->",head->num);
         head=head->next;
     }
     printf("NULL\n");
  
}

int lenth(struct Data *p)    //计算结点长度
 {
      int i=0;
     for(int j=0;p!=NULL;j++)
     {
         i++;
         p=p->next;
     }
     return(i); 
   
}
    


struct Data* find(struct Data *p,int key)   //查找指定结点
 {
     while(p&&p->num!=key)
         p=p->next;
     if(!p)
         return NULL;
     else
         return p;
}

struct Data* delt(struct Data *p,int key)    //删除指定结点
 {
    struct Data *q,*r=p;
     while(p->next&&p->next->num!=key)
         p=p->next;
     if(p->next)
     {
         q=p->next;
         p->next=q->next;
         free(q);
     }
      return r;
}

struct Data* inserth(struct Data *p,int key)   //在链表头部插入指定元素
 {
     struct Data *q=(struct Data *)malloc(sizeof(struct Data));
     q->next=p;
     q->num=key;
     return q;
}

struct Data* insertt(struct Data *p,int key)    //在链表尾部插入指定元素
 {
     struct Data *q=p;
     while(q->next)
         q=q->next;
     q->next=(struct Data *)malloc(sizeof(struct Data));
     q->next->next=NULL;
     q->next->num=key;
     return p;
}

struct Data* insertm(struct Data *p,int key)   //在链表中间插入指定元素
 {
    struct Data *q=p,*m;
    while(q&&q->num<key)
        q=q->next;
    m=(struct Data *)malloc(sizeof(struct Data));
    m->num=key;
    m->next=q->next;
    q->next=m;
    return p;
}

void deleted(struct Data *p)       //释放链表
 {
     struct Data *q=p;
     while(p)
     {
         q=p->next;
         free(p);
         p=q;
     }
}

void main()

 {
     struct Data *q;
     q = Creatlist();              //q为实参,指向头结点
     print(q);                       //输出初始化链表
     printf("链表元素个数:%d\n",lenth(q));   //输出链表长度
     find(q,6);                   //查找第一个数据为6的结点 
     q=delt(q,5);                   //删除第一个数据为5的结点
     print(q);
     q=inserth(q,0);                  //在头结点插入元素0
     q=insertt(q,0);                    //在尾结点插入元素0
     q=insertm(q,3);                    //在链表中间插入3,在第一个比3大的数后面插入
     print(q);
     deleted(q);                        //释放链表
 }
2011-09-21 23:08
linjiaxing
Rank: 2
来 自:梅州
等 级:论坛游民
帖 子:19
专家分:13
注 册:2011-9-21
收藏
得分:0 
太感谢你了啊!
2011-09-22 07:46
快速回复:关于链表程序的补充完整
数据加载中...
 
   



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

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