#include<stdio.h>
#include<malloc.h>
#include <stdbool.h>
typedef struct Node
{
int data;
struct Node * nextNodeAdress;
} NODE,* pNODE;
//------------------------------链表方法--------------------
pNODE createLinkList();
void showLinkList (pNODE);
bool is_empty(pNODE);
int LinkListLength(pNODE pHead);
void LinkList_sort(pNODE); //链表的冒泡排序
bool insert(pNODE ,int pos,int var);
bool delete(pNODE pHead, int pos);
//----------------------------------------------------------
//---------------------------主调函数---------------------------------
int main()
{
pNODE pHead=createLinkList();
LinkList_sort(pHead);
showLinkList(pHead);
printf("%d",LinkListLength(pHead));
printf("请输入要插入的位置和值:");
int pos ,var;
scanf("%d",&pos);
scanf("%d",&var);
insert(pHead ,pos , var);
showLinkList(pHead);
printf("你要删除第几个:");
scanf("%d",&var);
delete(pHead,var);
showLinkList(pHead);
return 0;
}
//---------------------------------------------------------------------
//------------------------------方法定义------------------------------------------------------------------------------
pNODE createLinkList()
{
NODE * pHead=(NODE *)malloc(sizeof(NODE));
NODE *TailNode=pHead;
printf("请输入节点个数:");
int len;
scanf("%d",&len);
int i;
for(i=1; i<=len; i++)
{
TailNode->nextNodeAdress=(NODE*)malloc(sizeof(NODE));//让节点指向下一个节点
TailNode=TailNode->nextNodeAdress;//更新尾节点 让尾指针指向最新的节点
printf("请输入第%d个节点的值:",i);
scanf("%d",&(TailNode->data));
TailNode->nextNodeAdress=NULL;
}
return pHead;
}
void showLinkList(pNODE pHead)
{
pNODE T=pHead->nextNodeAdress;
do
{
printf("%d\n",T->data);
T=T->nextNodeAdress;
}
while(T!=NULL);
}
bool is_empty(pNODE pHead)
{
if(NULL==pHead->nextNodeAdress)
return true;
else
return false;
}
int LinkListLength(pNODE pHead)
{
pNODE T= pHead->nextNodeAdress;
int length=0;
if(T==NULL)
return 0;
else
{
do
{
length++;
T=T->nextNodeAdress;
}
while(T!=NULL);
return length;
}
}
void LinkList_sort(pNODE pHead)
{
pNODE T= pHead->nextNodeAdress;
int len =LinkListLength(pHead);
int i,j,var;
for(i=1; i<len; i++)
{
for(j=1; j<len; j++)
{
if(T->data>(T->nextNodeAdress)->data)
{
var= T->data;
T->data=(T->nextNodeAdress)->data;
(T->nextNodeAdress)->data=var;
}
T=T->nextNodeAdress;
}
T= pHead->nextNodeAdress;
}
}
bool insert(pNODE pHead ,int pos,int var)
{
pNODE T= pHead->nextNodeAdress;
int i=0;
while(NULL!=T&&i<pos)
{
i++;
if(i==pos-1)
{
pNODE newnode=(pNODE)malloc(sizeof(NODE));
newnode->data=var;
pNODE q=T->nextNodeAdress;
T->nextNodeAdress=newnode;
newnode->nextNodeAdress=q;
return true;
}
T=T->nextNodeAdress;
}
return false;
}
bool delete(pNODE pHead, int pos)
{
pNODE T= pHead->nextNodeAdress;
int i =0;
while(NULL!=T)
{
i++;
if(i==pos-1)
{
pNODE q=T->nextNodeAdress;
T->nextNodeAdress=(T->nextNodeAdress)->nextNodeAdress;
free(q);
return true;
}
T=T->nextNodeAdress;
}
return false;
}
#include<malloc.h>
#include <stdbool.h>
typedef struct Node
{
int data;
struct Node * nextNodeAdress;
} NODE,* pNODE;
//------------------------------链表方法--------------------
pNODE createLinkList();
void showLinkList (pNODE);
bool is_empty(pNODE);
int LinkListLength(pNODE pHead);
void LinkList_sort(pNODE); //链表的冒泡排序
bool insert(pNODE ,int pos,int var);
bool delete(pNODE pHead, int pos);
//----------------------------------------------------------
//---------------------------主调函数---------------------------------
int main()
{
pNODE pHead=createLinkList();
LinkList_sort(pHead);
showLinkList(pHead);
printf("%d",LinkListLength(pHead));
printf("请输入要插入的位置和值:");
int pos ,var;
scanf("%d",&pos);
scanf("%d",&var);
insert(pHead ,pos , var);
showLinkList(pHead);
printf("你要删除第几个:");
scanf("%d",&var);
delete(pHead,var);
showLinkList(pHead);
return 0;
}
//---------------------------------------------------------------------
//------------------------------方法定义------------------------------------------------------------------------------
pNODE createLinkList()
{
NODE * pHead=(NODE *)malloc(sizeof(NODE));
NODE *TailNode=pHead;
printf("请输入节点个数:");
int len;
scanf("%d",&len);
int i;
for(i=1; i<=len; i++)
{
TailNode->nextNodeAdress=(NODE*)malloc(sizeof(NODE));//让节点指向下一个节点
TailNode=TailNode->nextNodeAdress;//更新尾节点 让尾指针指向最新的节点
printf("请输入第%d个节点的值:",i);
scanf("%d",&(TailNode->data));
TailNode->nextNodeAdress=NULL;
}
return pHead;
}
void showLinkList(pNODE pHead)
{
pNODE T=pHead->nextNodeAdress;
do
{
printf("%d\n",T->data);
T=T->nextNodeAdress;
}
while(T!=NULL);
}
bool is_empty(pNODE pHead)
{
if(NULL==pHead->nextNodeAdress)
return true;
else
return false;
}
int LinkListLength(pNODE pHead)
{
pNODE T= pHead->nextNodeAdress;
int length=0;
if(T==NULL)
return 0;
else
{
do
{
length++;
T=T->nextNodeAdress;
}
while(T!=NULL);
return length;
}
}
void LinkList_sort(pNODE pHead)
{
pNODE T= pHead->nextNodeAdress;
int len =LinkListLength(pHead);
int i,j,var;
for(i=1; i<len; i++)
{
for(j=1; j<len; j++)
{
if(T->data>(T->nextNodeAdress)->data)
{
var= T->data;
T->data=(T->nextNodeAdress)->data;
(T->nextNodeAdress)->data=var;
}
T=T->nextNodeAdress;
}
T= pHead->nextNodeAdress;
}
}
bool insert(pNODE pHead ,int pos,int var)
{
pNODE T= pHead->nextNodeAdress;
int i=0;
while(NULL!=T&&i<pos)
{
i++;
if(i==pos-1)
{
pNODE newnode=(pNODE)malloc(sizeof(NODE));
newnode->data=var;
pNODE q=T->nextNodeAdress;
T->nextNodeAdress=newnode;
newnode->nextNodeAdress=q;
return true;
}
T=T->nextNodeAdress;
}
return false;
}
bool delete(pNODE pHead, int pos)
{
pNODE T= pHead->nextNodeAdress;
int i =0;
while(NULL!=T)
{
i++;
if(i==pos-1)
{
pNODE q=T->nextNodeAdress;
T->nextNodeAdress=(T->nextNodeAdress)->nextNodeAdress;
free(q);
return true;
}
T=T->nextNodeAdress;
}
return false;
}