码迷,mamicode.com
首页 > 其他好文 > 详细

单链表操作(数据结构实验一)

时间:2014-09-25 16:41:32      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:algorithm   数据结构   单链表   

          实验内容

1 初始化一个带表头结点的单链表。
2 从表头不断插入结点建立一个带表头结点的单链表。设表中元素的类型为整型,元素值从键盘输入。
3 从表尾不断插入结点建立一个带表头结点的单链表。设表中元素的类型为整型,元素值从键盘输入。
4 打印一个带表头结点的单链表。
5 清空一个带表头结点的单链表。


代码:(只是把各个函数写好,并给出了调用数据,其他根据实验要求改就行了)

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define M 100
typedef int Etype; //定义单链表结点值的类型为整型

typedef struct Node
{
    Etype data;              //单链表中的数据域
    struct Node *link;          //单链表的指针域
}Node;
typedef Node *List;      //定义单链表

List BuildList1();
List BuildList2();
void PrintList(List first);
void clear(List *first);
//头插法建立链表
List BuildList1()
{
    Node *L;
    Etype x,n;
    L = (Node *)malloc(sizeof(Node));   //申请头结点空间
    L->link = NULL;                      //初始化一个空链表
    printf("请输入元素个数:\n");
    scanf("%d",&n);
   printf("请输入元素:\n");                  //x为链表数据域中的数据
    for(int i=0;i<n;i++)
    {
        scanf("%d",&x);
        Node *p;
        p = (Node *)malloc(sizeof(Node));   //申请新的结点
        p->data = x;                     //结点数据域赋值
        p->link = L->link;                    //将结点插入到表头L-->|2|-->|1|-->NULL
        L->link = p;
    }
    return L;
}
//尾插法建立链表
List BuildList2()
{
    Node *L,*r;
    Etype n,x;
    L = (Node *)malloc(sizeof(Node));   //申请头结点空间
    L->link = NULL;                  //初始化一个空链表
    printf("请输入元素个数:\n");
    scanf("%d",&n);
    r = L;                          //r始终指向终端结点,开始时指向头结点
    printf("请输入元素:\n");
    for(int i=0;i<n;i++)
    {
        scanf("%d",&x);
        Node *p;
        p = (Node *)malloc(sizeof(Node));   //申请新的结点
        p->data = x;                     //结点数据域赋值
        r->link = p;                 //将结点插入到表头L-->|1|-->|2|-->NULL
        r = p;
    }
    r->link = NULL;

    return L;
}
//输出链表
void PrintList(List first)
{
    Node *Li;
    Li=first->link;
    while(Li!=NULL)
    {
        printf("%d ",Li->data);
        Li=Li->link;
    }
    printf("\n");
}
//清空链表
void clear(List *first)
{
    Node *p=*first;
    while(*first)
    {
        p=(*first)->link;
        free(*first);
        *first=p;
    }
}
int main()
{
    Node *L;
    L=BuildList1();        //调用BuiltdList1(前插法)建立单链表算法
    PrintList(L); //打印单链表
    clear(&L);//清空单链表
    L=BuildList2();                      //调用BuiltdList2(后插法)建立单链表算法
    PrintList(L);	       //打印单链表
    clear(&L);//清空单链表
}


单链表操作(数据结构实验一)

标签:algorithm   数据结构   单链表   

原文地址:http://blog.csdn.net/caduca/article/details/39551891

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!