#include"ll.h"
#define CHECK(p) if(NULL==p) return NULL
#define ERR -1
#define succes 0
int *jjd1();int *jjd();
int foreach (lin *pheader);
typedef struct lin{
int num;
struct lin *pri;
struct lin *pnext;
}lin;//结构体
int main(void)
{ lin *pheader=NULL;
// pheader=jjd1();//尾插法
pheader=jjd();//头插法
foreach (pheader);//遍历
return 0;
}
int *jjd1(){
lin *pheader=( lin *)malloc(sizeof( lin));
CHECK(pheader);
pheader->pri=NULL;pheader->pnext=NULL;
int val=0;
lin *pt= pheader;
while(1){
printf("shuru");
scanf("%d",&val);
if(ERR==val){break;}
lin *pnode=( lin *)malloc(sizeof( lin));
pnode->pri=NULL;pnode->pnext=NULL;
pnode->num=val;
pnode->pri=pt;
pt->pnext=pnode;
pt=pnode;
}return pheader;//尾插法
}
int *jjd(){
lin *pheader=( lin *)malloc(sizeof( lin));
CHECK(pheader);
pheader->pri=NULL;pheader->pnext=NULL;
int val=0;
lin *pm = (lin *)malloc(sizeof(lin));
memset(pm, 0, sizeof(lin));
pm->pri = NULL;
pm->pnext = NULL;
printf("shuru");
scanf("%d",&val);
pm->num=val;
pheader->pnext=pm;
pm->pri=pheader;
//printf("%d",pm->num);
while(1){
printf("shuru");
scanf("%d",&val);
if(ERR==val){break;}
lin * pt = (lin *)malloc(sizeof(lin));
pt->pri = NULL;
pt->pnext = NULL;
pt->num=val;
pheader->pnext=pt;
pm->pri = pt;
pt->pnext =pm;
pt->pri =pheader;/*printf("%d",pt->num);*/
pm=pt;
}return pheader;
}//头插法
int foreach (lin *pheader){
CHECK(pheader);
lin *pc=pheader->pnext;
while(pc!=NULL){
printf("%d\n",pc->num);
pc=pc->pnext;}
return succes;
}
双向链表 头插法 尾插法
最新推荐文章于 2025-03-02 19:31:55 发布