#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct Node //单链表结点
{
int size;
struct Node *next;
}LinkNode;
void CreatList(LinkNode *&L) //尾插法创建单链表
{
int n,i,a[100];
LinkNode *s,*r;
L=(LinkNode *)malloc(sizeof(LinkNode));
r=L;
cin>>n;
for(i=0;i<n;i++)
{
s=(LinkNode *)malloc(sizeof(LinkNode));
cin>>s->size;
r->next=s;
r=s;
}
r->next=NULL;
}
bool ListInsert(LinkNode *&L,int i,int data) //插入数据元素
{
int j=0;
LinkNode *p=L,*s; //j为0,p从头结点开始查找
if(i<0) return false;
while(j<i-1 && p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL) return false; //未找到第i-1号元素
else //插入新结点
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->size=data;
s->next=p->next; //头插法插入
p->next=s;
return true;
}
}
void DispList(LinkNode *&L) //打印链表
{
LinkNode *p=L->next;
while(p!=NULL)
{
cout<<p->size<<" ";
p=p->next;
}
}
int main()
{
LinkNode *p;
int i,data;
CreatList(p);
cin>>i>>data;
if(ListInsert(p,i,data))
DispList(p);
else
cout<<"error!";
return 0;
}
SWUST数据结构--单链表插入操作实现
最新推荐文章于 2023-04-09 10:38:57 发布