1.顺序表缺陷:
1、空间不够了需要增容,增容是要付出代价
2、避免频繁扩容,空间0满了基本都是扩2倍,可能就会导致一定的空间浪费
3、顺序表要求数据从开始位置连续存储,那么在头部或者中间位置插入删除数据就需要挪动数据,效率不高
- 针对顺序表缺陷,就设计出的链表
//链表结构:
#pragma once
#include<stdio.h>
typedef int SLTDateType;
struct SListNode
{
int data;
struct SListNode* next;
}
//尾插
//尾插
void SListPushBack(SLTNode** pphead,SLTDataTYpe x);
{
SLTNode* newnode=(SLTNode*)malloc(sizeof(SLTNOde));
newnode->data=x;
newnode->next=NULL;
if (*pphead==NULL)
{
*pphead=newnode;
}
else
{
//找到尾节点
SLTNode* tail=*pphead;
while(tail->next!=NULL)
{
tail=tail->next;
}
tail->next=newnode;
}
}
运行完整代码:
#pragma once
#include<stdio.h>
typedef int SLTDateType;
typedef struct SListNode
{
int data;
struct SListNode* next;
}SLTNode;
//尾插
void SListPushBack(SLTNode** pphead,SLTDataTYpe x);
{
SLTNode* newnode=(SLTNode*)malloc(sizeof(SLTNOde));
newnode->data=x;
newnode->next=NULL;
if (*pphead==NULL)
{
*pphead=newnode;
}
else
{
//找到尾节点
SLTNode* tail=*pphead;
while(tail->next!=NULL)
{
tail=tail->next;
}
tail->next=newnode;
}
}
void TestSList1()
{
SLTNode* plist=NUlL;
SListPushBack(&plist,1);
SListPushBack(&plist,2);
SListPushBack(&plist,3);
SListPushBack(&plist,4);
SListPrint(plist);
}
int main()
{
TestSList1();
return 0;
}