问题描述
- 单链表做线性表的存储
-
以带头结点的单链表做线性表的存储表示,编写算法删除表中的偶数序号结点,使(a1,a2,a3,a4,a5...)变成(a1,a3,a5...)
解决方案
#include<stdio.h>
#include<malloc.h>
typedef struct LNode {
int data;
struct LNode *next;
}*LinkList;
LinkList Creat_List(int n) {
LinkList head,p,q;
head = p = (LinkList)malloc(sizeof(LNode));
for(int i = 1; i <= n; i++) {
q = (LinkList)malloc(sizeof(LNode));
q->data = i;
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
void Delete_evenLNode(LinkList head) { // 删除偶数位结点
LinkList q,p = head;
int i;
for(i = 1; p->next; ++i) {
if(i % 2 == 0) {
q = p->next;
p->next = q->next;
free(q);
}
else p = p->next;
}
}
void Print_List(LinkList head) {
LinkList p = head->next;
while(p != NULL) {
printf("%d ",p->data);
p = p->next;
}
printf("
");
}
void main () {
LinkList head = Creat_List(16);
Print_List(head);
Delete_evenLNode(head);
printf("删除偶数结点后 :
");
Print_List(head);
}
解决方案二:
线性表的单链表存储学习
线性表的单链表存储(2)
线性表的静态单链表存储结构
时间: 2024-09-09 01:38:26