#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node *next;
};
typedef struct Node* LinkList;
typedef struct Node *ListNode;
void InitList(LinkList *head);
void HeadInsrt(LinkList *head);
void showList(LinkList head);
void EndInsert(LinkList *head);
void Delete(LinkList *head,int index);
void InsertByPosition(LinkList *head,int index,int data);
int main(void)
{
LinkList head;
InitList(&head);
//HeadInsrt(&head);
EndInsert(&head);
showList(head);
Delete(&head,1);
printf("\n");
showList(head);
Delete(&head,4);
printf("\n");
showList(head);
system("pause");
return 0;
}
void InitList(LinkList *head)
{
*head=(LinkList)malloc(sizeof(ListNode));
(*head)->next=NULL;
}
void HeadInsrt(LinkList *head)
{
int a;
printf("请输入要生成的节点个数:");
scanf("%d",&a);
struct Node *p;
for(int i=0;i<a;i++)
{
int data;scanf("%d",&data);
p = (struct Node *)malloc(sizeof(struct Node));
p->data=data;
p->next=(*head)->next;
(*head)->next=p;
}
}
void EndInsert(LinkList *head)
{
LinkList tail;
tail=*head;
int a;
struct Node *p;
printf("enter entire whole number:");
scanf("%d",&a);
for(int i=0;i<a;i++)
{
int data;scanf("%d",&data);
p = (struct Node *)malloc(sizeof(struct Node));
p->next=NULL;
p->data = data;
tail->next=p;
tail=p;
}
}
void showList(LinkList head)
{
LinkList p=head->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void InsertByPosition(LinkList *head,int index,int data)
{
int i=0;
LinkList p=*head;
while(p && i<index-1)
{
p=p->next;
i++;
}
if(!p || index<i)
{
printf("插入位置不合法\n");
}
ListNode q;
q=(ListNode)malloc(sizeof(struct Node));
q->data = data;
q->next=p->next;
p->next=q;
}
void Delete(LinkList *head,int index)
{
LinkList p=*head;
int i=0;
while(p && i<index-1)
{
p=p->next;
i++;
}
if(!p || i>index)
{
printf("删除位置不合理");
}
if(p->next==NULL)//第i-1个节点之后已无其他节点
{
printf("第%d个节点不存在\n",index);
}
LinkList q=p->next;
p->next=q->next;
free(q);
}