#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}list,*lplist;
lplist createlist() //创建一个表头,表头没有数据,只有一个指针域
{
lplist head=(lplist)malloc(sizeof(list));
head->next=nullptr;
return head;
}
lplist createnode(int data)//创建一个结点,包含数据域和指针域
{
lplist newnode=(lplist)malloc(sizeof(list));
newnode->data=data;
newnode->next=nullptr;
return newnode;
}
void insertnodebylist(lplist list,int data) //从头部插入指针
{
lplist newnode=createnode(data);
newnode->next=list->next;
list->next=newnode;
}
void insertnodebytail(lplist list,int data) //从尾部插入指针
{
lplist newnode=createnode(data);
lplist p=list;
while(p->next!=nullptr)//指针从头往尾扫,扫到值为空,添加数据
{
p=p->next;
}
if(p->next==nullptr)
p->next=newnode;
printf("\n");
}
void deletenodebyappoin(lplist list,int posdata) //通过指定位置删除数据
{
lplist p=list;
lplist q=list->next;
if(q==nullptr)
{
printf("指定的位置没有数据,无法删除");
system("pause");
return;
}
else
{
while(q->data!=posdata)
{
p=q;
q=p->next;
if(q==nullptr)
{
printf("未找到指定位置");
}
}
p->next=q->next;
free(q);
}
printf("\n");
}
void printlist(lplist list)
{
lplist p=list->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
}
int main()
{lplist list= createlist();
insertnodebylist(list,1);
insertnodebylist(list,2);
insertnodebylist(list,3);
printlist(list);
printf("\n");
insertnodebytail(list,0);
printlist(list);
printf("\n");
deletenodebyappoin(list,2);
printlist(list);
system("pause");
return 0;
}
C中动态链表的添加,删除
猜你喜欢
转载自blog.csdn.net/qq_18671205/article/details/89602997
今日推荐
周排行