六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 41|回复: 0

C语言实现的顺序链表代码

[复制链接]

升级  68%

40

主题

40

主题

40

主题

秀才

Rank: 2

积分
152
 楼主| 发表于 2013-1-26 15:51:24 | 显示全部楼层 |阅读模式
      数据结构上机考试练习代码,置于此以备后用!
 
    #include<stdio.h>#define ListSize 100//定义顺序表存放的数据类型typedef int DataType;//定义顺序表的结构typedef struct{    //用于存放元素的数组    DataType data[ListSize];    //用于标示顺序表元素个数的变量    int length;}Seqlist;//顺序表插入void InsertList(Seqlist *L,DataType x,int i){    int j;    //如果插入位置i小于1或大于当前顺序表长度,则提示出错    if(i<1||i>L->length+1)    {        Error("position error");        return;    }    //如果当前顺序表长度已达峰值,则提示溢出    if(L->length>=ListSize)    {        Error("overflow");        return;    }    //循环后移插入位置及其后边的元素    for(j=L->length-1;j>i-1;j--)    {        L->data[j+1]=L->data[j];    }    //插入数据    L->data[i-1]=x;    L->length++;}//打印错误void Error(char *c){     printf("there is a error : %s \n",c);}void DeleteList(Seqlist *L,int i){    int j;    //如果当前顺序表的长度为0,则提示当前顺序表为空    if(L->length==0)    {        Error("this list is null");    }    //如果当前指定的位置小于1或大于表长,则提示其位置错误    else if(i<1||i>L->length)    {        Error("position error");    }    else    {         //否则,循环将位置i之后的原始顺序前移一位        for(j=i;j<=L->length-1;j++)        {            L->data[j-1]=L->data[j];        }        //表长减1         L->length--;    }}//打印表中所有元素void PrintList(Seqlist *L){    int i;     //如果当前顺序表的长度为0,则提示当前顺序表为空    if(L->length==0)    {        Error("this list is null");        return;    }    else    {        for(i=0;i<L->length-1;i++)        {           printf("%d ",L->data[i]);        }    }}int main(){    int i;    Seqlist *list;    list=(Seqlist*)malloc(sizeof(list));    for(i=1;i<ListSize;i++)    {       InsertList(list,i,i);    }    PrintList(list);    printf("the data element of seqlist is %d \n",list->length);    DeleteList(list,20);    printf("the data element of seqlist is %d \n",list->length);    free(list);//释放list所占用内存} 

 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表