数据结构之链表(c语言实现)
题目:删除奇数序号结点。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node * next;
}ElemSN;
ElemSN * createlink(int data[],int n)
{
ElemSN *h=NULL,*t,*newp;
int i;
for( i=0;i<n;i++)
{
newp=(ElemSN *)malloc(sizeof(ElemSN));
newp->data=data[i];
newp->next=NULL;
if(!h)
h=t=newp;
else
t=t->next=newp;
}
return h;
}
ElemSN * Delkey(ElemSN * h)
{
ElemSN*q,*t;
h=h->next;//挪头指针
for(t=q=h;q;t=q,q=q->next)
{
t->next=q->next;//此行代码完成后,出现两条链,但是头结点的那条链是偶数结点组成的。
}
return h;
}
void printlink(ElemSN *h)
{
ElemSN *p;
p=h;
for(p=h;p;p=p->next)
printf("%5d",p->data);
}
int main(void)
{
int data[8]={1,2,3,4,5,6,7,8};
ElemSN * head;
head=createlink(data,8);
printlink(Delkey(head));
}