| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 224 人关注过本帖
标题:大家帮忙填写完整需要填写完整的地方。然后最后运行的8个选项再添加1~2个。 ...
取消只看楼主 加入收藏
csn
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2010-4-11
收藏
 问题点数:0 回复次数:0 
大家帮忙填写完整需要填写完整的地方。然后最后运行的8个选项再添加1~2个。添加写比如(查询。保存等)谢谢
#include <stdio.h>         /*线性链表实验*/
#include <stdlib.h>
typedef char DataType;    /*在此例中数据类型采用字符类型*/

typedef struct node
{    DataType data;              
    struct node *next;
}LNode;

LNode *head;    /* head 表示人为增加的头结点 head是全局变量 指向头结点*/


void CreatLinkList()
{    LNode *p,*s;
    char x;
    int z=1;               /*控制循环*/
    head=(LNode *)malloc(sizeof(LNode));  /* 为头结点申请分配内存 */
    head->next=NULL;
    p=head;
    printf("\n\t\t\t建立一个线性表");
    printf("\n\t\t\t说明:请逐个输入字符,结束标记为'#'!\n");
    while(z)
    {
        printf("\t\t\t输入:");
        scanf("%c",&x);
        getchar();
        if(x!='#')
        {    s=(LNode *)malloc(sizeof(LNode));  /*为结点申请分配内存*/
            s->data=x;
            s->next=p->next;
            p->next=s;
            p=s;}
        else z=0;
    }
}

int LenLinkList()
{    int  n=0;
    LNode* p=head;           /* p指向头结点*/
    while (p->next)
       { p=p->next; n++; }   /* p所指的是第 n 个结点*/
   return  n;
}

void InsertLinkList(int i,char x)
/* 在线性表L的第 i 个位置上插入一个值为 x 的新元素
   1<=i<=表长加一为合法插入位置*/
{    int j;
    LNode *s,*p;
    s=(LNode *)malloc(sizeof(LNode));
    s->data=x;
    if(i<1)
    {     
        printf("\n\t\t\t插入位置不合法!\n");
        free(s);
        return;
    }
    else
    {    j=0;
        p=head;
        while(p!=NULL && j<i-1)   /*寻找插入位置*/
        {    j++;
            p=p->next;
        }
        if(p!=NULL)
        {    s->next=p->next;
            p->next=s;
        }
        else
        {
            printf("\n\t\t\t未找到插入位置!\n");
            free(s);
            return;
        }
    }
}


void DeleteLinkList(int i)
{    LNode *p,*q;
    int j=0;
    if(head->next==NULL) printf("\n\t\t\t链表为空没有元素可以删除!\n");
    if (i<1)
    {
        printf("\n\t\t\t位置不合法\n");
        return;
    }
    p=head;
    while (p->next && j<i-1)  
    {    p=p->next; j++;}                /*循环直到p指向第i-1个元素*/
    if (!(p->next) || j>i-1)
    {
        printf("\n\t\t\t没找到要删除的位置\n");
        return;                       /*删除结点不合法*/
    }
    q=p->next; p->next=q->next;        /*删除第i个数据元素*/
    free(q);                           /*释放第i个数据元素所占内存*/
}

int SearchLinkList(DataType x)
/*在线性表中查找值为x的数据元素*/
{int y;
    printf("\t\t\需要填写的地方!\n");
    return y;
}

DataType GetfromLinkList(int i)
/*返回线性表中的第i个元素的值*/
{DataType l;
    printf("\t\t\t需要填写的地方!\n");
    return l;
}

void ShowLinkList()
{    LNode *p=head;
    printf("\n\t\t\t显示线性表的所有元素:");
    if(head->next==NULL)
        printf("\n\t\t\t链表为空!\n");
    else
    {
        printf("\n\t\t");
        while(p->next!=NULL)
        {    printf("\t%c",p->next->data);
            p=p->next;
        }
    }
}


/* 主函数 */
main()
{    char choice;
    int i,j=1;
    DataType x;
    while(j)
    {    printf("\n\n\n\n");
        printf("\t\t\t--线 性 链 表--\n");
        printf("\n\t\t\t************************************");
        printf("\n\t\t\t*       1-------建               *");
        printf("\n\t\t\t*       2-------插               *");
        printf("\n\t\t\t*       3-------删               *");
        printf("\n\t\t\t*       4-------求             *");
        printf("\n\t\t\t*       5-------按 值 查找         *");
        printf("\n\t\t\t*       6-------读取元素值         *");
        printf("\n\t\t\t*       7-------显示线性表         *");
        printf("\n\t\t\t*       0-------退               *");
        printf("\n\t\t\t************************************\n");
        printf("\t\t\t请选择菜单号(0--7):");
        scanf("%c",&choice);getchar();
        if(choice=='1')
            CreatLinkList();
        else if (choice=='2')
        {    printf("\n\t\t\t请输入的位置i和数值x(输入格式:i,x):");
            scanf("%d,%c",&i,&x);
            InsertLinkList(i,x);}
        else if (choice=='3')
        {    printf("\n\t\t\t请输入要删除元素的位序:");
            scanf("%d",&i);
            DeleteLinkList(i);}
        else if (choice=='4')
        {    printf("\t\t\t表长为: %d\n",LenLinkList());}
        else if (choice=='5')
            SearchLinkList(x);
        else if (choice=='6')
            GetfromLinkList(i);
        else if (choice=='7')
            ShowLinkList();
        else if (choice=='0')
        {    j=0;
            printf("\t\t\t程序结束!\n");}
        else printf("\n输入错误!请重新输入!\n");
    }
}

[ 本帖最后由 csn 于 2010-4-21 21:24 编辑 ]
搜索更多相关主题的帖子: head include 
2010-04-21 21:15
快速回复:大家帮忙填写完整需要填写完整的地方。然后最后运行的8个选项再添加1~ ...
数据加载中...
 
   



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

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