假若s,p,q是连续三个结点的指针,若我们要在p前插入一个新结点r,则只需把s的右链域指针指向r,r的左链域指针指向s,r的右链域指针指向p,p的左链域指针指向r即可。在p,q之间插入原理也一样。下面就是一个应用双向循环链表插入算法的例子:#include#include#include#define N 10typedef struct nodechar name[20];struct node *llink,*rlink;stud;stud * creatint nstud *p,*h,*s;int i;ifhstud *mallocsizeofstudNULLprintf"不能分配内存空间!";exit0;h-name[0]'\0';h-llinkNULL;h-rlinkNULL;ph;fori0;iN;I++ifs stud * mallocsizeofstudNULLprintf"不能分配内存空间!";exit0;p-rlinks;printf"请输入第%d个人的姓名",i+1;scanf"%s",s-name;s-llinkp;s-rlinkNULL;ps;h-llinks;p-rlinkh;returnh;stud * searchstud *h,char *xstud *p;char *y;ph-rlink;whilep!hyp-name;ifstrcmpy,x0returnp;else pp-rlink;printf"没有查找到该数据!";void printstud *hint n;stud *p;ph-rlink;printf"数据信息为:\n";whilep!hprintf"%s ",&*p-name;pp-rlink;printf"\n";void insertstud *pchar stuname[20];stud *s;ifs stud * mallocsizeofstudNULLprintf"不能分配内存空间!";exit0;printf"请输入你要插入的人的姓名:";scanf"%s",stuname;strcpys-name,stuname;s-rlinkp-rlink;p-rlinks;s-llinkp;s-rlink-llinks;mainint number;char studname[20];stud *head,*searchpoint;numberN;clrscr;headcreatnumber;printhead;printf"请输入你要查找的人的姓名:";scanf"%s",studname;searchpointsearchhead,studname;printf"你所要查找的人的姓名是:%s\n",*&searchpoint-name;insertsearchpoint;printhead;3、删除删除某个结点,其实就是插入某个结点的逆操作。
还是对于双向循环链表,要在连续的三个结点s,p,q中删除p结点,只需把s的右链域指针指向q,q的左链域指针指向s,并收回p结点就完成了。下面就是一个应用双向循环链表删除算法的例子:#include#include#include#define N 10typedef struct nodechar name[20];struct node *llink,*rlink;stud;stud * creatint nstud *p,*h,*s;int i;ifhstud *mallocsizeofstudNULLprintf"不能分配内存空间!";exit0;h-name[0]'\0';h-llinkNULL;h-rlinkNULL;ph;fori0;i〈n;i++ifs stud * mallocsizeofstudNULLprintf"不能分配内存空间!";exit0;p-〉rlinks;printf"请输入第%d个人的姓名",i+1;scanf"%s",s-name;s-llinkp;s-rlinkNULL;ps;h-llinks;p-rlinkh;returnh;stud * searchstud *h,char *xstud *p;char *y;ph-rlink;whilep!hyp-name;ifstrcmpy,x0returnp;else pp-rlink;printf"没有查找到该数据!";void printstud *hint n;stud *p;ph-rlink;printf"数据信息为:\n";whilep!hprintf"%s ",&*p-name;pp-rlink;printf"\n";void delstud *pp-rlink-llinkp-llink;p-llink-rlinkp-rlink;free p;mainint number;char studname[20];stud *head,*searchpoint;numberN;clrscr;headcreatnumber;printhead;printf"请输入你要查找的人的姓名:";scanf"%s",studname;searchpointsearchhead,studname;printf"你所要查找的人的姓名是:%s\n",*&searchpoint-name;delsearchpoint;printhead;在这里列举了一个应用单链表基本算法的综合程序,双向链表和循环链表的综合程序大家可以自己去试一试。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33457-5.html
走一个
当然美国侵入
北洋用的是实心弹