《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-11.docx》由会员分享,可在线阅读,更多相关《数据结构习题集(李冬梅 第2版)C语言版源程序习题源代码 习题集-算法2-11.docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#include include using namespace std;/函数结果状态代码define OK 1define ERROR 0define OVERFLOW -2 /Status是函数的返回值类型,其值是函数结果状态代码 typedef int Status;/结点的数据域/结点的指针域/LinkList为指向结构体LNode的指针类/结点的数据域/结点的指针域/LinkList为指向结构体LNode的指针类/初始化/销毁链表/后插法创立单链表/查找倒数第k个结点/输出链表typedef struct LNode int data;struct LNode *next;LNod
2、e, *LinkList;型Status InitList(LinkList &L);Status DestroyList(LinkList &L);void CreateList_R(LinkList &L,int L_Data,int n); int Search_k(LinkList list,int k);void PrintList(LinkList L);int main() (int laData=2,-6,8,9,-ll,15,-20,6,8;LinkList la;InitList(la);CreateList_R(lazlaData,sizeof(laData)/sizeo
3、f(laData0);cout”链表 la 为:”;PrintList (la);int k=7;int a=Search_k(la,7); if(a=l) coutcc” 查找成功else cout 查找失败 next=NULL;/头结点的指针域置空return OK; ) /销毁链表 Status DestroyList(LinkList &L) ( while(L)LNode *p=L;L=L-next;delete p;/释放空间return OK; )/后插法创立单链表void CreateList_R(LinkList &L,int L_Dataf int n) /正位序输入n个元
4、素的值,建立带表头结点而单链表LLNode *r = L;for (int i=0;idata=L_Datai; p-next=NULL; r-next=p; r=p;/生成新结点/初始化p的数据域为L_Datai/将新结点*P插入尾结之后 /r指向新的尾结点*p/输出链表void PrintList(LinkList L)LNode *p=L; coutNonen; p=p-next; while(p)cout ndata; p=p-next;coutendl;/查找倒数第k个结点int Search_k(LinkList list,int k)/查找链表fist中倒数第k个位置上的结点int i=0;LNode *p=list-nextz *q=list-next; while(p!=NULL)/计数器赋初值/p和q指向首元结点/顺链域向后扫描,直到p为空if(inext; p=p-next;if(i=k)/计数器加1 /q移到下一个结点/P移到下一个结点coutdata 2 - -6 - 8 - 9 - -11 - 15 - -20 - 6 - 8 8查找成功