单链表的运算

以下是一个单链表,包括单链表的建立,插入,查找,删除

由于刚开始接触链表,如有错误,还请谅解

此为整体框架
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
	int date;
	struct node *next;
}liklistnode;

liklistnode *initialize(void);//初始化单链表
liklistnode *creat(int n);//尾插法建立单链表
liklistnode *locate(liklistnode *head,int key);//按值查找结点
liklistnode *get(liklistnode *head,int i);//按序号查找结点
void insert_After(liklistnode * Ptr,int x);//在指定位置后插入结点
void insert_Before(liklistnode *head,liklistnode *Ptr,int x);//在指定位置前插入结点
liklistnode *delete_After(liklistnode *Ptr);//删除指定结点的后续结点
liklistnode *delete_i(liklistnode *head,int i);//删除第i个结点

int main()
{
	
	return 0;
}
liklistnode *initialize(void)
{
	liklistnode *head;
	head = (liklistnode*)malloc(sizeof(liklistnode));
	if(head == NULL)
		return 0;
	head->next=NULL;
	return 0;
}
liklistnode *creat(int n)
{
	liklistnode *head,*p,*q;
	head = (liklistnode*)malloc(sizeof(liklistnode));
	q = head;
	for(int i = 0;i<n;i++)
	{
	p = (liklistnode*)malloc(sizeof(liklistnode));
	p->date = 0;
	q->next = p;
	q = p;
	}
	return head;
}
liklistnode *locate(liklistnode *head,int key)
{
	liklistnode *p;
	p = head->next;
	while(p!=NULL&&p->date != key)
		p=p->next;
	return p;
}
liklistnode *get(liklistnode *head,int i)
{
	int j = 0;
	liklistnode *p=head;
	if(i == 0)
		return NULL;
	while(j < i&&p->next != NULL)
	{
		p=p->next;
		j++;
	}
	
	if(i == j)
		return p;
	else return NULL;
}
void insert_After(liklistnode * Ptr,int x)
{
	liklistnode *s = (liklistnode*)malloc(sizeof(liklistnode));
	s->date = x;
	s->next = Ptr->next;
	Ptr->next = s;
}
void insert_Before(liklistnode *head,liklistnode *Ptr,int x)
{
	liklistnode *s,*qPtr;
	s = (liklistnode*)malloc(sizeof(liklistnode));
	s->date = x;
	qPtr = head;
	while(qPtr->next != Ptr)
		qPtr = qPtr->next;
	qPtr->next = s;
}
liklistnode *delete_After(liklistnode *Ptr)
{
	liklistnode *fPtr;
	fPtr = Ptr->next;
	Ptr->next = fPtr->next;
	return fPtr;
}
liklistnode *delete_i(liklistnode *head,int i)
{
	liklistnode *Ptr,*qPtr = NULL;
	Ptr = get(head,i-1);
	if(Ptr != NULL&&Ptr->next != NULL)
		qPtr = delete_After(Ptr);
	return qPtr;
}
------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容