国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

C語(yǔ)言之雙向鏈表詳解及實(shí)例代碼

2020-01-26 14:25:58
字體:
供稿:網(wǎng)友

1,雙向鏈表簡(jiǎn)介。

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個(gè)數(shù)據(jù)結(jié)點(diǎn)中都有兩個(gè)指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個(gè)結(jié)點(diǎn)開始,都可以很方便地訪問它的前驅(qū)結(jié)點(diǎn)和后繼結(jié)點(diǎn)。一般我們都構(gòu)造雙向循環(huán)鏈表。

2,例子要求:

完成雙向鏈表的插入、刪除以及查找,將學(xué)生管理系統(tǒng)使用的數(shù)組,以雙向鏈表的方式實(shí)現(xiàn),能夠支持無(wú)限制的學(xué)生人數(shù)的增刪改查以及保存。

3,代碼實(shí)現(xiàn)。

#include <stdio.h>#include <string.h>#include <stdarg.h>#include <stdlib.h>typedef struct Student{  char name[20];  int score;  char phoneNum[14];} str_student;typedef struct Node{  str_student data;  struct Node *prior;     //指向前驅(qū)結(jié)點(diǎn)  struct Node *next;     //指向后繼結(jié)點(diǎn)}Node, *DLinkList;// 初始化一個(gè)學(xué)生鏈表DLinkList initDouLinkList(){  Node *L,*p,*r;  char name[20];  char phone[14];  int score;  L = (Node *)malloc(sizeof(Node));  L->next = NULL;  r = L;  r->next = NULL;  while(1)  {    p = (Node *)malloc(sizeof(Node));    printf("input name is out exit,input student name:/n");    scanf("%s",name);    if (strcmp(name,"out")==0)    {      break;    }    strcpy(p->data.name, name);    printf("input student score:");    scanf("%d",&score);    p->data.score = score;    printf("input student phone:");    scanf("%s",phone);    strcpy(p->data.phoneNum, phone);    p->next = r->next;    r->next = p;    r = p;  }  r->next = NULL;  return L;}//添加學(xué)生信息DLinkList insertDouLinkListStuent(DLinkList L,int i,char *name, int score,char *phonenum){  DLinkList p,s;  p = L->next;  int tempi;  for(tempi = 1;tempi < i-1; tempi++)    p = p->next;  s = (Node *)malloc(sizeof(Node));  s->data.score = score;  strcpy(s->data.name,name);  strcpy(s->data.phoneNum,phonenum);  s->next = p->next;  p->next->prior = s;  s->prior = p;  p->next = s;  return L;}// 查找學(xué)生信息int findDouLinkListStudent(DLinkList L,char *name){  DLinkList p;  p = L->next;  int i = 1;  while(p != NULL && (strcmp(p->data.name, name)!=0))  {    ++i;    p = p->next;  }  if(p == NULL)    return 0;  else return i;}// 移除一個(gè)學(xué)生DLinkList removeDouLinkListStudent(DLinkList L,char *name){  int tempi = 1;  DLinkList p;  p = L->next;  int i =findDouLinkListStudent(L,name);  while((tempi++) != i && p != NULL)  {    p = p->next;  }  if(p == NULL)    printf("no list /n");  else if(p->next == NULL)  {    p->prior->next = NULL;    free(p);  }  else  {    p->prior->next = p->next;    p->next->prior = p->prior;    free(p);  }  return L;}// 鋪助打印信息void printfInfo(DLinkList L){  DLinkList p;  p = L->next;  while (p!=NULL)  {    printf("student name %s/n",p->data.name);    printf("student name %d/n",p->data.score);    printf("student name %s/n",p->data.phoneNum);    p=p->next;  }}void main (){  char name2[20]="hanmeimei";  char phone2[14]="13612345678";  DLinkList L =initDouLinkList();  // 2.1 初始化學(xué)生雙向鏈表數(shù)據(jù)  insertDouLinkListStuent(L,1,name2,99,phone2);  printfInfo(L);  // 2.2 查找學(xué)生zhangsan  findDouLinkListStudent(L,'zhangsan');  printfInfo(L);  // 2.3 刪除學(xué)生zhangsan  removeDouLinkListStudent(L,'zhangsan');  printfInfo(L);  // 2.4 添加學(xué)生zengteng  insertDouLinkListStuent(L,9,'zengteng',89,'13643345667');  printfInfo(L);}

以上就是對(duì)C語(yǔ)言雙向鏈表的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 姚安县| 平邑县| 章丘市| 新乐市| 屯昌县| 江西省| 九江县| 安图县| 乌苏市| 饶平县| 曲沃县| 乐山市| 区。| 花莲市| 广丰县| 林芝县| 宜君县| 织金县| 南丹县| 合山市| 伊吾县| 明溪县| 延长县| 光山县| 曲周县| 安西县| 荥阳市| 麦盖提县| 垫江县| 习水县| 宜君县| 泸定县| 南郑县| 凉山| 台北市| 外汇| 百色市| 饶阳县| 驻马店市| 屏南县| 都匀市|