关闭

3.15(自调整表)

89人阅读 评论(0) 收藏 举报
分类:

数组实现

<span style="font-size:14px;">#include <iostream>
#include <stdlib.h>
#define MAX 5
int k=0,t=0;
using namespace std;
typedef struct node
{
    int* base;
    int lengh;
    int size;
}qnode,*pnode;
void init(pnode list)
{
    list->base=(int*)malloc(MAX*sizeof(int));
    list->size=MAX;
    list->lengh=0;
}
void puts(pnode list,int e)
{
    int i;
    if(k==0)
    {
        list->base[1]=e;
    }
    else if(k==1)
    {
        for(i=t;i>=1;i--)//把所有数字往后移动一个位置
        {
            list->base[i+1]=list->base[i];
        }
        list->base[1]=e;
    }
    k=1;//判断是否是第一次进入
    t++;//记录进入了几个数据
}
void traverse(pnode list)
{
    int i;
    for(i=1;i<=t;i++)
    {
        cout<<list->base[i];
    }
}
int main()
{
    qnode list;
    init(&list);
    puts(&list,1);
    puts(&list,2);
    puts(&list,3);
    traverse(&list);
    return 0;
}
</span>

链表实现

#include <iostream>
#include <stdlib.h>
#define MAX 5
int t=0;
using namespace std;
typedef struct node
{
    int num;
    struct node* pnext;
}qnode,*pnode;
pnode init()
{
    pnode head;
    head=(pnode)malloc(sizeof(qnode));
    head->pnext=NULL;
    return head;
}
void puts(pnode head,int e)
{
    pnode q,p,temp;
    q=head;
    if(t==0)
    {
        p=(pnode)malloc(sizeof(qnode));
        p->num=e;
        q->pnext=p;
        p->pnext=NULL;
    }
    else if(t==1)
    {
        p=(pnode)malloc(sizeof(qnode));
        p->num=e;
        temp=q->pnext;
        p->pnext=temp;
        q->pnext=p;
    }
    t=1;
}
void traverse(pnode head)
{
    pnode q=head->pnext;
    while(q!=NULL)
    {
        cout<<q->num;
        q=q->pnext;
    }
}
int main()
{
    pnode head;
    head=init();
    puts(head,1);
    puts(head,2);
    puts(head,3);
    traverse(head);
    return 0;
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8307次
    • 积分:937
    • 等级:
    • 排名:千里之外
    • 原创:90篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条