单链表数据结构C语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单链表的建立(头插法)
写一算法用头插法建立无头结点的单链表,结果返回单链表的头指针typedef char DataType;
typedef struct node{
DataType data;
struct node *next;}ListNode;
typedef ListNode *LinkList;
LinkList CreateListF(void)
{
char ch;
LinkList head;
ListNode *s;
head=NULL;
ch=getchar();
while(ch!='\n')
{s=(ListNode*)malloc(sizeof(ListNode));
s->data=ch;
s->next=head;
head=s;
ch=getchar();
}
return(head);
}
单链表的打印
写一算法打印不带头结点的单链表head中每个结点的值
typedef char DataType;
typedef struct node{
DataType data;
struct node *next;}ListNode;
typedef ListNode *LinkList;
void PrintList(LinkList head)
{ListNode *p;
for(p=head;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
单链表的建立(尾插法)
写一算法用尾插法建立无头结点的单链表,结果返回单链表的头指针typedef char DataType;
typedef struct node{
DataType data;
struct node *next;}ListNode;
typedef ListNode *LinkList;
LinkList CreateListR(void){
char ch;
LinkList head;
ListNode *s,*r;
head=NULL;
r=NULL;
while ((ch=getchar())!='\n')
{s=(ListNode *)malloc(sizeof(ListNode));
s->data=ch;
if (head==NULL)
head=s;
else
r->next=s;
r=s;
}
if (r!=NULL)
r->next=NULL;
return(head);
}
单链表的建立(尾插法)
写一算法用尾插法建立带头结点的单链表,结果返回单链表的头指针typedef char DataType;
typedef struct node{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
LinkList CreateListR1(void)
{
char ch;
LinkList head=(ListNode *)malloc(sizeof(ListNode)); ListNode *s,*r;
r=head;
while ((ch=getchar())!='\n')
{
s=(ListNode *)malloc(sizeof(ListNode));
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
return(head);
}
单链表的打印
写一算法打印带头结点的单链表head中每个结点的值typedef char DataType;
typedef struct node{
DataType data;
struct node *next;}ListNode;
typedef ListNode *LinkList;
voidPrintList(LinkList head)
{
ListNode *p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);printf("\n");
}
单链表的查找
写一算法在带头结点的单链表head中查找第i个结点typedef char DataType;
typedef struct node{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
LinkList GetNode(LinkList head,int i)
{int j;
ListNode *p;
p=head;
j=0;
while (p->next && j
{p=p->next;j++;}
if (i==j)
return(p);
else
return(NULL);
}
单链表的查找
写一算法在带头结点的单链表head中查找其值为key的结点typedef char DataType;
typedef struct node{
DataType data;
struct node *next;}ListNode;
typedef ListNode *LinkList;