#include <stdio.h>
#include <malloc.h>
typedef char DataType;
typedef struct node {
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
ListNode *p;
LinkList head;
LinkList CreatList(void ) //建立链表
{
char ch;
LinkList head;
ListNode *s,*r;
head=(LinkList)malloc(sizeof(ListNode));
r=head;
while((ch=getchar())!='\n')
{
s=(ListNode *)malloc(sizeof(ListNode));
s->data=ch;
s->next=s;
r=s;
}
r->next=NULL;
return head;
}
ListNode * GetNode (LinkList head,int i) //按序号查找
{
int j;
ListNode *p;
p=head;
j=0;
while(p->next && j<i)
{
p=p->next;
j++;
}
if(i==j)
return p;
else
return NULL;
}
void InsertList(LinkList head, DataType x,int i) //插入
{
ListNode *p;
ListNode *s;
p=GetNode(head,i-1);
if(p==NULL)
printf("position error!");
s=(ListNode *)malloc(sizeof(ListNode));
s->data=x;
s->next=p->next;
p->next=s;
}
void DeleteList(LinkList head,int i) //删除
{
ListNode *p,*r;
p=GetNode(head,i-1);
if(p==NULL || p->next==NULL)
printf("position error");
r=p->next;
p->next=r->next;
free(r);
}
单链表的基本操作
最新推荐文章于 2022-07-19 20:22:32 发布